介紹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}」 –