我正在尝试使用android融合位置提供程序,使用 PRIORITY_HIGH_ACCURACY 每30分钟获取一次设备位置。 令人惊讶对我来说是什么,
当禁用GPS时,我希望API能够利用网络提供商和传感器为我提供精确度不高的位置。但是,在这种情况下,API返回的位置是 null for Android 5.0 。
这种行为在Android 4.0中有所不同,它给我的位置准确性不如预期。我找不到任何关于此的文档!有什么想法吗??
编辑:刚才意识到,拥有Android 5.0的设备没有SIM卡,这是否意味着如果没有SIM卡,融合位置提供商将不会考虑使用WiFi来查找最佳位置?
答案 0 :(得分:0)
关闭设备位置后,缓存将被清除,因此您应将LocationRequest与PRIORITY_HIGH_ACCURACY一起使用。您可以将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);