FusedLocationProvider - 如果位置模式是 "Device Only",有什么方法可以获取位置?

FusedLocationProvider - any way to get a location if location mode is "Device Only"?

我一直在研究 FusedLocationProvider,我发现如果您的 phone 的定位模式设置为 "Device Only"(在设置中更改 - 这意味着仅启用 GPS 定位。 Wifi 网络和手机信号塔未用于提高准确性),然后我找不到 FusedLocationProvider 为您提供位置而不要求用户将其更改为高精度(始终调用 onResolutionRequired)的方法。

所有四个 LocationRequest 优先级均无效:

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

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

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

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

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

https://github.com/gavingt/basic_location_improved