bugfix> android > 投稿

アプリケーションでは、FusedLocationProviderClientを使用しています

mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this);

位置情報リクエストは

   LocationRequest mLocationRequest = new LocationRequest();
    mLocationRequest.setInterval(UPDATE_INTERVAL_IN_MILLISECONDS);
    mLocationRequest.setFastestInterval(FASTEST_UPDATE_INTERVAL_IN_MILLISECONDS);
    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);

デバイスのロケーションモードがGPSのみモードの場合、このリクエストはロケーションの更新を取得していないようです。

ロケーション設定リクエストを作成し、ロケーションモードをHighAccuracyに変更してロケーションリクエストをサポートするようユーザーに依頼することができます。

   LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder();
    builder.addLocationRequest(mLocationRequest);
    mLocationSettingsRequest = builder.build();

ダイアログがユーザーに表示され、ロケーションモードを変更するように求められますが、この変更により、デバイスロケーションモードが永続的に高精度に変更されます。アプリケーションを閉じた後でも、変更は同じままであり、消費量が多くなります。

アプリケーションの場所モードのみを変更する方法はありますか? たとえば、実行中のアプリがHighAccuracyモードになり、アプリケーションを閉じると、以前のデバイスのモードに戻ります。

回答 1 件
  • 設定を以前の状態に変更するには、アクティビティライフサイクルを考慮する必要があります。これは、モードを切り替える前に設定クライアントで設定を読み取り、後で元に戻すために保持することで取得できます。設定の復帰に最も関連するのは、メソッド onDestroy() です。 、これは常に最終的な最終呼び出しになるためです(バッテリーが切断されていない場合)。

    Activity   onStart() を実装する必要があります 、 onResume()onPause()onStop()onDestroy() 。 SDKドキュメントには非常に適切な例が1つもあります。

    ライフサイクル対応コンポーネントを使用したライフサイクルの処理。

あなたの答え