融合位置提供程序:有没有办法检查位置更新是否失败?
介绍
在我的应用中,我希望获得用户当前所在位置的一次性准确位置。当我使用时,有时这将是空或过时的位置,因为我发现这只是一个缓存的位置,并没有请求新的位置更新。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
感谢您的阅读,请帮助我。