バックグラウンドでの位置情報の使用

Android 14(Android U)では、バックグラウンドでユーザーの位置情報にアクセスするアプリに新しい制限が導入されました。こうした変更を軽減するため、Navigation SDK のバージョン 5.3.2 ではバックグラウンドでの位置情報へのアクセスがより適切に管理されるようになりました。また、アプリが引き続き最も正確な位置情報にアクセスできるように、実装を更新することをおすすめします。

Android 14 の変更が Navigation SDK に与える影響

アプリで startGuidance() を呼び出すと、フォアグラウンド サービスがターンバイターン方式のナビのユーザー通知の表示を開始します。ターンバイターン方式ナビでは、ルートを更新して適切な視覚および音声案内を表示するために、ユーザーの位置情報にアクセスできる必要があります。Android 14 以降では、バックグラウンドでユーザーの正確な位置情報にアクセスするには、ユーザーの許可が必要です。デフォルトでは、バックグラウンドでの位置情報へのアクセスに対するユーザーの権限がアプリにない状態で、位置情報の更新のためにフォアグラウンド サービスを起動しようとすると、システムによって SecurityException がスローされ、アプリがクラッシュします。

Navigation SDK によるこの問題の緩和

バージョン 5.3.2 以降、Navigation SDK はアプリに影響を与えることなくこの SecurityException を処理し、ナビゲーションをバックグラウンドで引き続き実行できるようにします。また、Navigation SDK の AndroidManifest には ACCESS_BACKGROUND_LOCATION 権限が含まれています。これにより、Gradle のマージによって処理されるため、アプリで権限自体を宣言する必要がなくなります。ただし、アプリがバックグラウンドに移行する前にユーザーに通知が表示されない場合、Navigation SDK はシステムに依存して位置情報の更新を提供します。このようなシステム アップデートは頻繁には行われず、正確でないため、ナビゲーション エクスペリエンスが最適ではなくなる可能性があります。このため、バックグラウンドでの位置情報へのアクセスもユーザーに求めることをおすすめします。

ナビゲーションの位置情報の精度を改善するためにアプリ デベロッパーができること

バックグラウンドでの位置情報へのアクセスをユーザーに求めるメッセージが表示されるようにアプリを更新すると、Navigation SDK によって使用される位置情報信号の精度を改善できます。プロンプトでは、権限を付与することで、アプリがバックグラウンドで動作しているときの位置情報の精度とナビゲーションの利便性がどのように向上するかをユーザーに説明する必要があります。

サンプルの権限ダイアログ

ユーザーに位置情報へのアクセスを求める方法について詳しくは、位置情報の利用許可をリクエストする | センサーと位置情報 | Android デベロッパーをご覧ください。