我在我的一个设备上遇到了一个奇怪的问题,我使用谷歌融合定位API创建了一个后台服务,它工作得很完美,但在我的一个设备上,它有时工作得很好,但有时它会长时间地返回相同的信息--因为我添加了特定的位移,所以位置永远不会更新。我所做的解决方法是:关闭位置传感器,然后再打开它,它会再次开始发送位置更新。
你知道为什么会发生这种事吗?
手机是Qmobile S4 - android 6.0
谢谢
发布于 2018-05-11 12:38:13
希望这能对你有所帮助!声明一些最终变量,如下所示
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!");
}
};这段代码可以让我经常更新位置,而不会出现任何错误。希望能对你有所帮助。谢谢!
https://stackoverflow.com/questions/50284748
复制相似问题