Android:禁用地理围栏的模拟位置

时间:2017-04-03 04:39:53

标签: android geofencing mock-location

我正在开发一款纯粹基于地理围栏的Android应用程序。

概念:我对地理围栏的基本概念是用户可以为特定的地理位置玩游戏。

问题:一切正常但我从here下载了FakeGPS应用程序。我在家里,我在可以玩游戏的地方设置了我想要的位置。我的应用程序检测到地理位置,我可以在家里玩这个游戏。实际上它应该只为地理位置玩这个游戏。

解决方案:我已根据给定代码检查该位置是否来自 MockProvider GeofenceIntentService类。

boolean isMockLcoation = geofencingEvent.getTriggeringLocation().isFromMockProvider();

但它不是一个可靠的解决方案。我不是每次都得到准确的结果。

我已经检查了LocationAssistance服务,但无论如何它都无法帮助我进行地理围栏。

目标:我想为我的应用程序禁用模拟位置,或者区分位置是真还是模拟。

1 个答案:

答案 0 :(得分:0)

您可能只想检查是否启用了模拟位置设置。这是一个SO答案,或者你可以使用下面的代码,这是来自同一个答案。

https://stackoverflow.com/a/16776891/5318240

public static boolean isMockSettingsON(Context context) {
    // returns true if mock location enabled, false if not enabled.
    if (Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ALLOW_MOCK_LOCATION).equals("0"))
        return false;
    else
        return true;
}