4

我正在尝试利用 android 融合位置提供程序使用PRIORITY_HIGH_ACCURACY每 30 分钟获取一次设备位置。令我惊讶的是,

当 GPS 被禁用时,我希望 API 能够利用网络提供商和传感器为我提供准确度不高的位置。但是,在这种情况下,API 返回的位置对于 Android 5.0 为 null

这种行为在 Android 4.0 中有所不同,它为我提供了准确度不高的位置,正如预期的那样。我找不到任何关于此的文档!有什么想法吗??

编辑:刚刚意识到,具有 Android 5.0 的设备没有 SIM 卡,这是否意味着如果没有 SIM 卡,融合位置提供商也不会考虑使用 WiFi 来寻找最佳位置?

4

1 回答 1

0

设备位置关闭后缓存将被清除,因此您应该使用带 PRIORITY_HIGH_ACCURACY 的 LocationRequest。您可以使用 LocationCallBack 作为弱引用,这样您就可以避免内存泄漏。您必须在 onStop() 中删除位置更新。这样的代码,

            LocationRequest locationRequest = LocationRequest.create();
            locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
            locationRequest.setInterval(2000);
            LocationCallback locationCallback = new LocationCallback() {
                @Override
                public void onLocationResult(LocationResult locationResult) {
                    super.onLocationResult(locationResult);
                    if (locationResult == null || locationResult.getLastLocation() == null)
                        return;
                    updateLocation(locationResult.getLastLocation());
                }
            };

            fusedLocationProviderClient.requestLocationUpdates(locationRequest, locationCallback, null);
于 2019-10-24T21:11:03.920 回答