介绍Fused Location Provider:有没有方法检查位置更新是否失败?
在我的应用我想要得到的,其中用户目前是一次性的准确位置。当我使用FusedLocationProviderApi.getLastLocation
有时这将是空的或过时的位置,因为我发现这只是获取缓存的位置,并不要求新的位置更新。
解决方案只请求一次位置更新,如下所示。
LocationRequest locationRequest = LocationRequest.create()
.setNumUpdates(1)
.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
.setInterval(0);
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient,locationRequest,this)
现在我得到一个更准确的位置所有的时间。
我的问题
我怎样才能确定一个位置更新失败了吗?因为我只申请了1
当获得位置更新这个调用回调函数
@Override
public void onLocationChanged(Location location) {
}
然而,这不会被调用,如果位置更新失败。
我已经试过
我看到有一个ResultCallback。但是,即使一次性位置更新失败,onSuccess也总是被调用。
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient,locationRequest,this).setResultCallback(new ResultCallbacks<Status>() {
@Override
public void onSuccess(@NonNull Status status) {
DebugUtils.log("requestLocationUpdates ResultCallback onSuccess + " + status.toString(),true,true);
}
@Override
public void onFailure(@NonNull Status status) {
DebugUtils.log("requestLocationUpdates ResultCallback onFailure + " + status.toString(),true,true);
}
});
其他
使用com.google.android.gms:play-services-location:8.4.0
感谢您的阅读,请帮助我。
尝试检查'onSuccess()'方法的'status'参数? –
是的,当它应该失败时,toString方法报告“Status {statusCode = SUCCESS,resolution = null}” –