我想确保LocationListener收到的位置是一个"真实的"位置,而不是来自欺骗的来源(即应用程序位置欺骗)。我不关心"但是用户有时想要欺骗位置"——这是关于一个应用程序不能在android市场上发布。应用程序不需要那么精确的位置——它只需要是"真实的"。
你认为有没有办法检查位置是否被欺骗了?
你认为防止位置欺骗的好方法是什么?
也许有一个android方法给我的真实位置,然而?
是否可能有一个android方法来确定位置是否已被欺骗?
我的想法:
- 如果安装了位置欺骗应用程序,检查黑名单
- 启用/禁用不同的位置提供程序并检查它们返回的位置
- 运行后台服务观察位置(以被动的方式)并检查突然的位置变化
请告诉我你对这个问题的看法和意见。
- 从提供商名称:'gps'或'network'是合适的
-
大多数欺骗者忘记发送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;
最好的方法是:
- 模拟位置提供程序不发送NMEA数据。所以创建一个NMEA监听器。如果你没有得到NMEA更新,但你在onLocationChanged()中得到有效的GPS更新,一个欺骗正在被使用。
请看下一页的"维护当前最佳评估"主题:
保持当前的最佳评估