我正在开发一款纯粹基于地理围栏的Android应用程序。
概念:我对地理围栏的基本概念是用户可以为特定的地理位置玩游戏。
问题:一切正常但我从here下载了FakeGPS应用程序。我在家里,我在可以玩游戏的地方设置了我想要的位置。我的应用程序检测到地理位置,我可以在家里玩这个游戏。实际上它应该只为地理位置玩这个游戏。
解决方案:我已根据给定代码检查该位置是否来自 MockProvider 或GeofenceIntentService
类。
boolean isMockLcoation = geofencingEvent.getTriggeringLocation().isFromMockProvider();
但它不是一个可靠的解决方案。我不是每次都得到准确的结果。
我已经检查了LocationAssistance
服务,但无论如何它都无法帮助我进行地理围栏。
目标:我想为我的应用程序禁用模拟位置,或者区分位置是真还是模拟。
答案 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;
}