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

Android 12で導入されたコンパニオンデバイスプロファイルは、コンパニオンアプリが、スマートウォッチなどのコンパニオンデバイスのタイプに固有の一連の権限を要求できるようにする機能です。コンパニオンデバイスプロファイルを使用すると、アプリがモバイルデバイス上のユーザーに単一のプロンプトを表示して、個別にアクセス許可を要求する複数のプロンプトではなく、定義された一連のアクセス許可を要求できるようにすることで、登録プロセスが簡素化されます。これにより、セットアップエクスペリエンスがより合理化され、コンパニオンアプリのオプトイン率が向上します。

コンパニオンデバイスプロファイルの使用は、コンパニオンデバイスを所有するデバイスメーカーのみが利用できます。コンパニオンデバイスが機能にアクセスするには、要件を満たし、承認されている必要があります。

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

コンパニオンデバイスの詳細については、コンパニオンデバイスのペアリングを参照してください。

デバイスの動作

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

ユーザーがコンパニオンデバイスとの関連付けを作成するアプリのリクエストを受け入れると、 CompanionDeviceManager (CDM)サービスはコンパニオンデバイスが接続するのを待ち、接続すると、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_COMAPNION_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を使用して、単一のコンパニオンデバイスへの関連付け要求を行います。

DEVICE_PROFILE_WATCHプロファイルを要求するコンパニオンアプリを実装しているサードパーティの開発者は、次の手順を実行します。

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

検証

コンパニオンデバイスプロファイル機能の動作をテストするには、次のCTSテストを使用します。