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

whl*_*hlk 15 gps android location position

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

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

我的想法:

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

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

Ren*_*eno 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;
    
    Run Code Online (Sandbox Code Playgroud)

最好的方法是:

  • 模拟位置提供程序不发送NMEA数据.所以创建一个NMEA监听器.如果您没有获得NMEA更新,但是您在onLocationChanged()中获得了有效的GPS更新,则会使用欺骗.

  • 嗨Reno,我不知道NMEA听众?你怎么能清楚地指导? (2认同)