ボディセンサー データへのバックグラウンド アクセスをリクエストする

Android 13 と Wear OS 4 では、心拍数などのボディセンサーに対して、アプリがバックグラウンドでアクセスする方法が導入されています。この新しいアクセスモデルは、Android 10(API レベル 29)でバックグラウンドでの位置情報へのアクセスに導入されたものと同様です。

バックグラウンドでヘルスサービス データをモニターするときなど、アプリがバックグラウンドでボディセンサー情報にアクセスする必要がある場合、BODY_SENSORS_BACKGROUND 権限をリクエストする必要があります。

プライバシーに関するおすすめの方法ページに記載されているように、アプリは、ユーザー向けの機能に必須である場合にのみ BODY_SENSORS_BACKGROUND 権限をリクエストするようにします。また、ユーザーに正しく開示することも必要です。

権限を付与するプロセスは、アプリがターゲットとする SDK のバージョンによって異なります。

Android 13 以降をターゲットとするアプリ

マニフェスト ファイルで、既存の BODY_SENSORS 権限に加えて、BODY_SENSORS_BACKGROUND 権限を宣言します。

<uses-permission android:name="android.permission.BODY_SENSORS">
<uses-permission android:name="android.permission.BODY_SENSORS_BACKGROUND">

その後、まずボディセンサーへのアクセスをリクエストし、次にバックグラウンド センサーへのアクセスをリクエストする必要があります。

  1. BODY_SENSORS が付与されているかどうかを確認します。付与されていない場合はリクエストします。
  2. BODY_SENSORS_BACKGROUND が付与されているかどうかを確認します。付与されていない場合はリクエストします。
[常時] オプションが設定画面の最初のリスト項目
図 1. センサーの設定には、バックグラウンドでのセンサーデータ アクセスを許可する [常時] というオプションがあります。

注意: アプリが両方のボディセンサーの権限を同時にリクエストした場合、システムはリクエストを無視し、アプリにどちらの権限も付与しません。

Android 13(API レベル 33)以降では、実行時の権限ダイアログに [常に許可] オプションは含まれません。代わりに、図 1 に示すように、ユーザーがシステム設定からバックグラウンド センサーの常時アクセスを有効にする必要があります。BODY_SENSORS 権限を付与した後に BODY_SENSORS_BACKGROUND 権限をリクエストすると、ユーザーがこの設定ページに移動できるようになります。ユーザーが常時アクセスを拒否しても、ユーザーはアプリの利用を継続できます。

Android 12 以前をターゲットとするアプリ

「設定に移動」となっているリンクテキスト
図 2.権限ダイアログには、システム設定でアプリのセンサー権限に移動するためのリンクも含まれています。

アプリが Android 12 以前をターゲットとしている場合、BODY_SENSORS 権限をリクエストしても、バックグラウンドでのアクセスが自動的に許可されることはありません。代わりに、図 2 に示すように、アプリのセンサー権限の設定に移動するためのハイパーリンクを含むシステム ダイアログが表示されます。ユーザーは、設定ページでバックグラウンド センサーの使用を有効にする必要があります。

ユーザーはバックグラウンドでのアクセスを拒否できます。これは、アプリがバックグラウンドで実行されているときに BODY_SENSORS 権限を取り消すのと同じ効果があります。アプリが、バックグラウンドでのアクセスの権限を持たずに PassiveMonitoringClient を使用してバックグラウンドに移動すると、アプリは BODY_SENSORS 権限を失い、onPermissionLost() コールバックが呼び出されます。こうした理由から、実行時の権限をリクエストするためのおすすめの方法を実践することが特に重要です。