FusedLocationProvider - 如果位置模式为“仅设备”,有什么方法可以获取位置?

Gak*_*ak2 5 android android-location google-play-services

我一直在玩 FusedLocationProvider,我发现如果您手机的定位模式设置为“仅设备”(在设置中更改 - 这意味着仅启用 GPS 定位。不使用 Wifi 网络和手机信号塔来提高准确性),然后我找不到 FusedLocationProvider 为您提供位置而不要求用户将其更改为 High Accuracy(始终调用 onResolutionRequired)的方法。

所有四个 LocationRequest 优先级都不起作用:

  1. PRIORITY_HIGH_ACCURACY - 要求切换到“高精度”定位模式
  2. PRIORITY_BALANCED_POWER_ACCURACY - 同上
  3. PRIORITY_LOW_POWER - 同上
  4. PRIORITY_NO_POWER - 只是没用

如果设备处于此模式,是否无法通过 FusedLocationProvider 获取位置?我很确定您可以通过 android.location.LocationManager 获得它。如果这意味着在它之上进行更好的抽象,这似乎是一个巨大的设计缺陷。

Gav*_*ght 0

您确实需要使用 LocationManager 来检测这一点,我同意这确实很愚蠢。使用以下代码:

LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
if (locationManager != null && locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
   requestLocationUpdates();
} else {
   //Location request code
}
Run Code Online (Sandbox Code Playgroud)

这是我制作的包含此技术的示例项目:

https://github.com/gavingt/basic_location_improved