检查地理位置是否已被欺骗

时间:2011-07-08 11:46:54

标签: android gps location position

我想确保LocationListener接收的位置是“真实的”,并且不是来自欺骗性的源(即应用程序Location Spoofer)。我不关心“但用户有时想欺骗位置” - 它是关于一个不会分布在Android市场上的应用程序。应用程序不需要位置准确 - 它只需要“真实”。

你认为有办法检查这个位置是否被欺骗了吗?
你认为什么是防止位置欺骗的好方法?是否有一个android方法可以让我但是真实的位置呢?是否有可能用android方法确定该位置是否已被欺骗?

我的想法:

  • 如果安装了位置欺骗应用,请检查黑名单
  • 启用/停用不同的位置提供商并检查其返回的位置
  • 运行后台服务,观察位置(以被动方式)并检查突然的位置变化

请告诉我你对这个问题的想法和意见。

2 个答案:

答案 0 :(得分:18)

  • 从提供商名称:'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更新,则会使用欺骗。

答案 1 :(得分:3)

在下一页上查看“维持当前最佳估算值”主题:

Maintaining a current best estimate