介绍
在我的应用程序中,我想获得用户当前所在位置的一次性准确位置。当我FusedLocationProviderApi.getLastLocation
有时使用时,这将是 null 或过时的位置,因为我发现这只是获取缓存的位置并且不请求新的位置更新。
解决方案是只请求一次位置更新,如下所示。
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
感谢阅读,请帮帮我。