繁体   English   中英

自API级别<19(Kitkat)起如何在设备的当前位置模式下检测位置

[英]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

我想知道的是:

  • 自API级别<19(Kitkat)起如何在设备的当前位置模式下检测位置。
  • 可能吗 ?
  • 如果没有解决方法

绝对有可能,但是报告的值将有所不同。 在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM