从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
答案 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芯片),因此您也必须管理该案例。