2015-04-28 49 views
0

Android在开发人员选项中有一个选项来模拟位置。如果我的理解是正确的,如果你设置这个位置,应用程序将开始获取这个位置,而不是实际位置?获取实际位置而不是模拟位置

如果是这种情况,我们如何获得实际位置,而不管此选项中设置的是什么?

如果情况并非如此,那么实际使用的模拟位置何时(仅在模拟器中?)?

+0

可以使用以下方法http://developer.android.com/reference/android/location/Location.html#isFromMockProvider()过滤模拟位置,然后显示某种信息的用户来停止假的位置提供河 – Manish

回答

0

按我的了解,我们cant't得到实际的位置,如果我们使用MOKE位置,

使用莫克位置

假设你正在开发在澳大利亚地区一个应用程序,并且希望在美国环境中测试您的应用程序(仅限位置),而不去那里,在这种情况下,我们使用Moke位置。

我觉得位置来自android frameworks库,而这些apis写的是这样,如果你设置了moke位置,那么api只会优先考虑moke位置。所以,如果你想使用实际的位置,你需要停止moke loaction。

您可以编写自己的API,这将直接对话,GPS,那么可能是你会做的,但其主要项目本身

编辑

您可以检查MockSetting选项是打开还是关闭

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

我可以停止嘲笑位置,但如果我的应用程序依赖于正确的位置,用户仍然可以轻松地伪造它。如果你想提供基于位置的安全性,那么有什么进展? – ata

+0

我已编辑我的答案请审查。 –