15

序章

私のアプリでは、ユーザーが現在いる場所の 1 回限りの正確な位置を取得したいと考えています。私がFusedLocationProviderApi.getLastLocation時々使用したとき、これはキャッシュされた場所を取得するだけで、新しい場所の更新を要求しないことがわかったため、null または古い場所になることがありました。

解決策は、以下に示すように、場所の更新を 1 回だけ要求することでした。

 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 があることがわかりました。ただし、1 回限りの位置情報の更新が失敗した場合でも、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

読んでくれてありがとう、助けてください。

4

1 に答える 1