如何在Android上使用LocationClient停止假位置

时间:2014-07-11 00:07:30

标签: android gps geolocation

我正在开发GPS游戏,类似于地理寻宝,这需要设备准确的GPS坐标。

我使用的是LocationClient,而不是LocationManager。

在测试初期,一位朋友指出,该位置可以使用Play商店中的免费应用程序伪造。一些研究表明,如果没有root,这些应用程序需要启用Mock Location。所以我开始进行一个简单的检查,看看是否启用了模拟位置,如果是,那么应用程序将禁止用户播放,直到它被禁用。

这让我想到了,根植的用户仍然可以在没有启用模拟位置的情况下伪造他们的位置,但是大多数这些应用程序仍然具有MOCK_LOCATION权限,无论设备是否已植根。所以我使用了一种方法来检测任何需要Mock Location的应用程序。问题是,即使在我的非根本注释3中,似乎有一些预安装的应用程序由于某种原因需要Mock Location,这会阻止游戏。所以这个解决方案不会起作用。

有没有其他方法可以检查某个位置是否可能使用LocationClient进行伪造?

2 个答案:

答案 0 :(得分:0)

在API 18+中,您可以使用Location.isFromMockProvider来检查特定位置是否被模拟。如果应用程序提供模拟(假)位置或您在自己的应用程序中使用模拟提供程序,则此标志将设置为true。

当然,有根电话可以绕过这个。

答案 1 :(得分:-1)

在您的设备中,转到设置>>开发人员选项>>允许模拟位置

必须在您的设备中检查此选项,了解您获取模拟位置更新的原因。停止接收只是取消选中它。

在您的代码中,您还可以在mLocationClinet.setMockMode(false);位置跟踪活动方法中设置onCreate()

我希望它有效:)