我想确保 LocationListener 收到的位置是“真实的”位置,而不是来自欺骗源(即应用程序 Location Spoofer )。我不关心“但用户有时想欺骗位置”——它是关于一个没有在 android 市场上分发的应用程序。应用程序不需要如此准确的位置 - 它只需要是“真实的”。
你认为有没有办法检查位置是否被欺骗?
你认为什么是防止位置欺骗的好方法?
是否有一个 android 方法可以让我真实位置仍然如此?
是否可能有一个 android 方法来确定该位置是否已被欺骗?
我的想法:
- 如果安装了位置欺骗应用程序,请检查黑名单
- 启用/禁用不同的位置提供程序并检查它们返回的位置
- 运行后台服务监视位置(以被动方式)并检查突然的位置变化
请给我您对此问题的想法和意见。
最佳答案
- 从提供商名称:“gps”或“网络”是正确的
大多数欺骗者忘记发送 GPS 状态更新。这是您可以利用的优势
//如果启用模拟位置则返回 true,如果未启用则返回 false。
if (Settings.Secure.getString(getContentResolver(), Settings.Secure.ALLOW_MOCK_LOCATION).equals("0")) return false; else return true;
最好的方法是:
- 模拟位置提供商不发送 NMEA 数据。所以创建一个 NMEA 监听器。如果您没有获得 NMEA 更新,但您在 onLocationChanged() 中获得了有效的 GPS 更新,则使用了欺骗。
关于android - 检查地理位置是否被欺骗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6623945/