如何检测设备的当前位置模式中的位置,因为API级别< 19(Kitkat)

时间:2015-02-25 05:48:51

标签: android

从API级别19(Kitkat)开始,可以获得设备的当前位置模式:

public int getLocationMode(Context context)
{
return Settings.Secure.getInt(activityUnderTest.getContentResolver(), Settings.Secure.LOCATION_MODE);

}

0 = LOCATION_MODE_OFF
1 = LOCATION_MODE_SENSORS_ONLY
2 = LOCATION_MODE_BATTERY_SAVING
3 = LOCATION_MODE_HIGH_ACCURACY

我想知道的是什么:

  • 自API以来如何检测设备当前位置模式中的位置 等级< 19(Kitkat)。
  • 有可能吗?
  • 如果不是什么工作

1 个答案:

答案 0 :(得分:0)

绝对可能,但报道的数值会有所不同。在KitKat之前,通过LocationManager确定启用了哪些位置提供程序来访问此信息。有两个主要提供商:GPS和网络。

  • LocationManager.getProvider(LocationManager.GPS_PROVIDER).isEnabled()将描述用户是否在位置设置中启用/禁用了GPS访问。这与LOCATION_MODE_HIGH_ACCURACY
  • 大致相同
  • LocationManager.getProvider(LocationManager.NETWORK_PROVIDER).isEnabled()将描述用户是否在位置设置中启用/禁用了网络资源。这与LOCATION_MODE_BATTERY_SAVING
  • 大致相同
  • 如果两个提供商都被停用,那么您基本上处于LOCATION_MODE_OFF

这不是1:1的映射,但它应该足够接近大多数用例。请注意,如果该提供商不存在,getProvider()也可以返回null(例如,该设备没有GPS芯片),因此您也必须管理该案例。