Проверьте, было ли геолокация подделана
Я хочу убедиться, что местоположение, полученное LocationListener, является "реальным" и не исходит из поддельного источника (т. е. приложение Местоположение Spoofer). Меня не волнует "но пользователь иногда хочет подделать местоположение" - это приложение, которое не распространяется по Android market. Приложению не нужно, чтобы местоположение было таким точным - оно просто должно быть "реальным".
Как вы думаете, есть ли способ проверить, имеет ли местоположение подменен?
как вы думаете, это хороший способ предотвратить подмену местоположения?
может быть, есть android-метод, который дает мне реальное местоположение тем не менее?
может быть, есть android-метод, чтобы определить, было ли местоположение подделано?
мысли у меня были:
- Проверьте черный список, если установлено приложение location-spoofing
- включить / отключить различные поставщики местоположения и проверить их возвращенные локации
- запустите фоновую службу, наблюдая за местоположением (пассивным способом) и проверьте внезапные изменения местоположения
пожалуйста, дайте мне свои мысли и вклад в эту проблему.
2 ответов
- от имени поставщика: "gps" или "сеть" являются правильными
-
большинство обманщиков забывают отправлять обновления статуса GPS. Это то, что вы можете использовать в свою пользу
// returns true if mock location enabled, false if not enabled.
if (Settings.Secure.getString(getContentResolver(), Settings.Secure.ALLOW_MOCK_LOCATION).equals("0")) return false; else return true;
лучший метод заключается в следующем:
- провайдеры Mock location не отправляют данные NMEA. Поэтому создайте слушателя NMEA. Если вы не получаете обновление NMEA, но получаете действительные обновления GPS в onLocationChanged (), происходит подделка используемый.