【发布时间】:2016-06-20 06:00:42
【问题描述】:
简介
在我的应用中,我想一次性获得用户当前所在位置的准确位置。当我使用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}”
标签: java android google-maps fusedlocationproviderapi