Android 位置传感器有时返回相同的位置
Android 位置传感器有时返回相同的位置,android,geolocation,Android,Geolocation,我在我的一台设备上遇到了一个奇怪的问题,我使用google fused location API创建了一个后台服务,它工作得很好,但在我的一台设备上,有时它工作得很好,但有时它会持续返回相同的lat长时间,因为我添加了特定的置换,所以位置永远不会更新。 我所做的解决方法是:先关闭位置传感器,然后打开它,然后它会再次开始发送位置更新 知道为什么会这样吗 手机是qmobiles4-android 6.0 谢谢希望这能帮到你! 像这样声明一些最终变量 private final int LOCATIO
我在我的一台设备上遇到了一个奇怪的问题,我使用google fused location API创建了一个后台服务,它工作得很好,但在我的一台设备上,有时它工作得很好,但有时它会持续返回相同的lat长时间,因为我添加了特定的置换,所以位置永远不会更新。 我所做的解决方法是:先关闭位置传感器,然后打开它,然后它会再次开始发送位置更新 知道为什么会这样吗 手机是qmobiles4-android 6.0
谢谢希望这能帮到你! 像这样声明一些最终变量
private final int LOCATION_INTERVAL = 3000;
private final int FAST_LOCATION_INTERVAL = 1500;
private final int MAX_WAIT_TIME = 5 * 1000;
private final float SMALLEST_DISPLACEMENT = 10;
private final float TWO_MINUTES = 1000 * 60 * 2;
并将它们分配到您的位置请求
locationRequest = LocationRequest.create();
locationRequest.setInterval(LOCATION_INTERVAL);
locationRequest.setFastestInterval(FAST_LOCATION_INTERVAL);
locationRequest.setSmallestDisplacement(SMALLEST_DISPLACEMENT);
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
locationRequest.setMaxWaitTime(MAX_WAIT_TIME);
如果有权限,请连接融合位置提供商
public void connect() {
if (fusedLocationProviderClient != null) {
if (ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
&& ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
fusedLocationProviderClient.requestLocationUpdates(locationRequest, locationCallback, null);
//onLocationReceived(fusedLocationProviderClient.getLastLocation().getResult());
isConnected = true;
}
}
如果不需要位置更新,请断开连接
public void disconnect() {
if (fusedLocationProviderClient != null) {
fusedLocationProviderClient.removeLocationUpdates(locationCallback);
isConnected = false;
}
}
重写locationCallback以获取位置结果
locationCallback = new LocationCallback() {
@Override
public void onLocationResult(LocationResult locationResult) {
super.onLocationResult(locationResult);
onLocationReceived(locationResult.getLastLocation());
}
@Override
public void onLocationAvailability(LocationAvailability locationAvailability) {
super.onLocationAvailability(locationAvailability);
//showToast("Location Available!");
}
};
这段代码可以让我经常更新位置,没有任何错误。
希望对你有帮助。谢谢大家! 你能告诉我这个代码是否适用于背景位置吗?我有一个web平台表单来跟踪整个城市的交付情况,我在后台跟踪位置时遇到问题,我询问LocationAvailability,如果我通过方法LocationAvailability.isLocationAvailable()获得了可用的位置,它返回true,然后我选择getLastLocation,几乎每次该位置都返回与我在控制器上获得的相同的结果。。有什么建议吗?