Android 12 で導入されたコンパニオン デバイス プロファイルは、コンパニオン デバイス(スマートウォッチなど)の種類に固有の権限セットをコンパニオン アプリからリクエストできるようにする機能です。コンパニオン デバイス プロファイルを使用すると登録プロセスがシンプルになる理由は、モバイル デバイスのユーザーに権限リクエストのプロンプトを個別に何度も表示する代わりに、定義された権限セットのリクエストを一つのプロンプトで表示できるためです。これにより、コンパニオン アプリのセットアップ フローがスムーズになり、オプトイン率も向上します。
コンパニオン デバイス プロファイルを使用するには、コンパニオン アプリは次の要件を満たしていなければなりません。
- コンパニオン デバイス(スマートウォッチなど)を管理する。
- コンパニオン デバイス プロファイルに定義されているすべての権限を必要とするアプリ機能または Android API の呼び出し。
それぞれのコンパニオン デバイス プロファイルは Android ロールに対応します。各プロファイルの権限と対応する Android ロールの詳細については、サードパーティ製アプリ向けのコンパニオン デバイス プロファイルをご覧ください。
コンパニオン デバイスの詳細については、コンパニオン デバイスのペア設定をご覧ください。
デバイスの動作
このセクションでは、コンパニオン デバイス プロファイルが使用されている場合のデバイスの動作について説明します。
ユーザーがコンパニオン デバイスとの関連付けを求めるアプリのリクエストを承認すると、CompanionDeviceManager
(CDM)サービスはデバイス プロファイル ロール(スマートウォッチなど)をコンパニオン アプリに割り当て、そのプロファイル ロールに定義された権限をすべて付与します。図 1 は、COMPANION_DEVICE_WATCH
デバイス プロファイルの権限をリクエストするアプリの例を示しています。
図 1. スマートウォッチのデバイス プロファイルの権限をリクエストするダイアログ
ユーザーが設定でパッケージ データを消去するか、コンパニオン アプリですべてのデバイスを削除すると、アプリがフォアグラウンドで実行されていないか、フォアグラウンド サービスが実行されていないときに、CDM はプロファイルを取り消します。プロファイルを取り消すと、プロファイルに定義されているすべての権限も取り消されます。
ユーザーは、特定のデバイス プロファイルに関する権限付与リクエストを承認してアプリにそれを付与した後で、個別に権限を取り消すことができます。ユーザーが権限を一つ取り消しても、アプリはコンパニオン デバイスに関連付けられたままですが、なんらかの機能が使用できなくなる可能性があります。その権限がアプリの動作に必要な場合は、アプリから通常の権限リクエストでその権限をリクエストする必要があります。
サードパーティ製アプリ向けのコンパニオン デバイス プロファイル
スマートウォッチ プロファイル
スマートウォッチ プロファイルは Android 12 で導入されました。
次の表に、COMPANION_DEVICE_WATCH
デバイス プロファイル ロールに定義済みの権限とそれを使用するための要件を示します。
権限 | コンパニオン アプリとデバイスの要件 |
---|---|
通知
POST_NOTIFICATIONS (added in Android 15) |
|
Phone |
|
SMS |
|
Contacts |
|
Calendar |
|
Nearby devices |
|
eSIM provisioning |
|
Managing ongoing calls |
|
グラス プロファイル
グラス プロファイルは Android 14 で導入されました。
次の表に、COMPANION_DEVICE_GLASSES
デバイス プロファイル ロールに定義済みの権限とそれを使用するための要件を示します。
権限 | コンパニオン アプリとデバイスの要件 |
---|---|
通知POST_NOTIFICATIONS |
|
Phone |
|
SMS |
|
Contacts |
|
Microphone |
|
Nearby devices |
|
Managing ongoing calls |
|
実装
サードパーティ デベロッパーが DEVICE_PROFILE_WATCH
プロファイルをリクエストするコンパニオン アプリを実装する場合の手順は次のとおりです。
setDeviceProfile
メソッドを呼び出します。プロファイルに渡します(
AssociationRequest
をビルドする際に、DEVICE_PROFILE_WATCH
など)。
ユーザーへの同意ダイアログの表示をスキップするデバイス メーカー
デバイス メーカーが独自のデバイスを使用するコンパニオン アプリを実装する場合、以下のように必要な Android システム設定を使用してコンパニオン アプリを認証し、アプリでユーザーへの同意ダイアログの表示をスキップできるようにします。
次のコマンドで証明書を取得します。
keytool -printcert -jarfile PATH/TO/APK
構成ファイル内でパッケージ名と証明書を次のサンプル入力のように置き換えます。
<!-- A list of packages managing companion device(s) by the same manufacturers as the main device. It will not create the association without prompting if the association has been called multiple times in a short period. Note that config_companionDeviceManagerPackage and config_companionDeviceCerts are parallel arrays. --> <string-array name="config_companionDevicePackages" translatable="false"> <item>YOUR_COMPANION_APP_PACKAGE_NAME</item> </string-array> <!-- A list of SHA256 Certificates managing companion device(s) by the same manufacturers as the main device. It will fall back to showing a prompt if the association has been called multiple times in a short period. Note that config_companionDeviceCerts and config_companionDeviceManagerPackage are parallel arrays. Example: "1A:2B:3C:4D" --> <string-array name="config_companionDeviceCerts" translatable="false"> <item>YOUR_COMPANION_APP_CERTIFICATE</item> </string-array>
AssociationRequest
を使用して、1 つのコンパニオン デバイスに関連付けリクエストを発行します。
検証
コンパニオン デバイス プロファイル機能の動作をテストするには、cts/tests/tests/companion/
で CTS テストを実施します。