[英]How to detect location in device's current location mode since API level < 19 (Kitkat)
自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
绝对有可能,但是报告的值将有所不同。 在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的映射,但是对于大多数用例来说应该足够接近。 请注意,如果该提供者不存在(例如,该设备没有GPS芯片),则getProvider()
也可以返回null
,因此您也必须管理这种情况。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.