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 优先级均无效:
- PRIORITY_HIGH_ACCURACY - 要求切换到定位模式“高”
准确性
- PRIORITY_BALANCED_POWER_ACCURACY - 同上
- PRIORITY_LOW_POWER - 同上
- 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
}
这是我制作的一个包含此技术的示例项目:
我一直在研究 FusedLocationProvider,我发现如果您的 phone 的定位模式设置为 "Device Only"(在设置中更改 - 这意味着仅启用 GPS 定位。 Wifi 网络和手机信号塔未用于提高准确性),然后我找不到 FusedLocationProvider 为您提供位置而不要求用户将其更改为高精度(始终调用 onResolutionRequired)的方法。
所有四个 LocationRequest 优先级均无效:
- PRIORITY_HIGH_ACCURACY - 要求切换到定位模式“高” 准确性
- PRIORITY_BALANCED_POWER_ACCURACY - 同上
- PRIORITY_LOW_POWER - 同上
- 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
}
这是我制作的一个包含此技术的示例项目: