コンパニオン デバイス プロファイル

Android 12 で導入されたコンパニオン デバイス プロファイルは、コンパニオン デバイス(スマートウォッチなど)の種類に固有の権限セットをコンパニオン アプリからリクエストできるようにする機能です。コンパニオン デバイス プロファイルを使用すると登録プロセスがシンプルになる理由は、モバイル デバイスのユーザーに権限リクエストのプロンプトを個別に何度も表示する代わりに、定義された権限セットのリクエストを一つのプロンプトで表示できるためです。これにより、コンパニオン アプリのセットアップ フローがスムーズになり、オプトイン率も向上します。

コンパニオン デバイス プロファイルは、コンパニオン デバイスを製造するデバイス メーカーのみが使用できます。コンパニオン デバイスでこの機能を使用するには、要件を満たし承認を受ける必要があります。

Android 12 で使用できるコンパニオン デバイス プロファイルのタイプは COMPANION_DEVICE_WATCH です。

コンパニオン デバイスの詳細については、コンパニオン デバイスのペア設定をご覧ください。

デバイスの動作

ここでは、コンパニオン デバイス プロファイルが使用されている場合のデバイスの動作を説明します。

ユーザーがコンパニオン デバイスとの関連付けを求めるアプリのリクエストを承認すると、CompanionDeviceManager(CDM)サービスはコンパニオン デバイスが接続されるのを待ち、接続された時点でデバイス プロファイル ロール(スマートウォッチなど)をコンパニオン アプリに割り当て、そのプロファイル ロールに定義された権限をすべて付与します。図 1 は、COMPANION_DEVICE_WATCH デバイス プロファイルの権限をリクエストするアプリの例を示しています。

スマートウォッチのデバイス プロファイルのダイアログ プロンプト

図 1. スマートウォッチのデバイス プロファイルの権限をリクエストするダイアログ

アプリとコンパニオン デバイスの関連付けが削除されると(パッケージのデータが消去された場合やデバイスが置き忘れられた場合など)、CDM はアプリに割り当てられていたデバイス プロファイル ロールを取り消し、そのプロファイル ロールに定義された権限をすべてアプリから削除します。

ユーザーは、特定のデバイス プロファイルに関する権限付与リクエストを承認してアプリにそれを付与した後で、個別に権限を取り消すことができます。ユーザーが権限を一つ取り消しても、アプリはコンパニオン デバイスに関連付けられたままですが、なんらかの機能が使用できなくなる可能性があります。その権限がアプリの動作に必要な場合は、アプリから通常の権限リクエストでその権限をリクエストする必要があります。

要件

コンパニオン アプリがコンパニオン デバイス プロファイル API にアクセスするには、以下の要件を満たす必要があります。

  • コンパニオン デバイス(スマートウォッチなど)がある。
  • コンパニオン デバイス プロファイルに定義された権限を要求する正当な理由がある。

スマートウォッチのコンパニオン デバイス プロファイルの要件

次の表に、COMPANION_DEVICE_WATCH デバイス プロファイル ロールに定義済みの権限とそれを使用するための要件を示します。

権限 コンパニオン アプリとデバイスの要件
通知

BIND_NOTIFICATION_LISTENER_SERVICE
  • Bluetooth と Wi-Fi の両方または一方を使用して接続されているデバイスである
  • 通知を表示できる画面がある(画面の代わりに接触センサーを使用するデバイスを除く)
  • ユーザー向けの通知機能がある(コンパニオン デバイスの画面にスマートフォンの通知を表示するなど)
電話

phone
  • Bluetooth と Wi-Fi の両方または一方を使用して接続されているデバイスである
  • マイクとスピーカーを内蔵し、音声通話が可能である
  • 画面に発信者情報が表示される
  • ユーザー向けの通話機能がある(コンパニオン アプリが通話を中継)
SMS

sms
  • Bluetooth と Wi-Fi の両方または一方を使用して接続されているデバイスである
  • SMS メッセージを表示する画面がある
  • ユーザー向けの SMS 機能がある
連絡先

contacts
  • Bluetooth と Wi-Fi の両方または一方を使用して接続されているデバイスである
  • 表示画面がある
  • 通話機能またはメッセージ機能の一貫として連絡先情報を使用する
カレンダー

calendar
  • Bluetooth と Wi-Fi の両方または一方を使用して接続されているデバイスである
  • 表示画面がある
  • スマートウォッチにユーザー向けのカレンダー機能がある
付近のデバイス

nearby_devices
  • Bluetooth と Wi-Fi の両方または一方を使用して接続されているデバイスである
  • 表示画面がある
  • スマートウォッチにユーザー向けのペアセット機能や接続機能がある
eSIM のプロビジョニング

USE_ICC_AUTH_WITH_DEVICE_IDENTIFIER
  • Bluetooth と Wi-Fi の両方または一方を使用して接続されているデバイスである
  • 表示画面がある
  • スマートウォッチに携帯通信会社の加入者向けサービスを管理するユーザー向けの機能がある
継続中の通話の管理

MANAGE_ONGOING_CALLS
  • Bluetooth と Wi-Fi の両方または一方を使用して接続されているデバイスである
  • マイクとスピーカーを内蔵し、音声通話が可能である
  • 画面に発信者情報が表示される
  • ユーザー向けの通話機能がある(コンパニオン アプリが通話を中継)

利用方法

ユーザー同意ダイアログを表示せずにアプリからコンパニオン デバイス プロファイルにアクセスするには、アプリが承認され、許可リストに追加される必要があります。Android チームは、許可リストへの追加リクエストを受け取ると、アプリを審査して、対応するコンパニオン デバイス プロファイルの要件を満たしていることを確認します。

実装

デバイス メーカーが独自のデバイスを使用するコンパニオン アプリを実装する場合、以下のように必要な Android システム設定を使用してコンパニオン アプリを認証し、アプリでユーザーへの CDM プロンプトの表示をスキップできるようにします。

  1. 次のコマンドで証明書を取得します。

    keytool  -printcert -jarfile PATH/TO/APK
    
  2. 構成ファイル内でパッケージ名と証明書を次のサンプル入力のように置き換えます。

    <!-- 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>
    
  3. AssociationRequest を使用して、1 つのコンパニオン デバイスに関連付けリクエストを発行します。

サードパーティ デベロッパーが DEVICE_PROFILE_WATCH プロファイルをリクエストするコンパニオン アプリを実装する場合の手順は次のとおりです。

  1. setDeviceProfile メソッドを呼び出します。
  2. AssociationRequest を作成するときに DEVICE_PROFILE_WATCH プロファイルを渡します。

検証

コンパニオン デバイス プロファイル機能の動作をテストするには、cts/tests/tests/companion/ で CTS テストを実施します。