介绍
我想在我的应用程序中获取用户当前位置的一次性准确信息。当我使用FusedLocationProviderApi.getLastLocation
时,有时会返回空值或过时的位置信息,因为我发现这只是获取了缓存位置而没有请求新的位置更新。
解决方案是仅请求一次位置更新,如下所示。
LocationRequest locationRequest = LocationRequest.create()
.setNumUpdates(1)
.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
.setInterval(0);
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient,locationRequest,this)
现在,我每次都能获得更准确的位置。
我的问题
如何确定位置更新失败了?因为我只请求一次。
当获取位置更新时,会调用此回调函数。
@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
参数了吗? - Jyotman Singh