Android 13 以降では、システム UI のメディア コントロールに、アクション ボタンとリモート再生の更新が含まれています。これらの変更により、スマートフォンとタブレットでより高度なメディア コントロール エクスペリエンスがサポートされ、デバイス間のシームレスなメディア転送が可能になります。
メディア コントロールの更新
このセクションでは、Android 13 でメディア コントロールに対して行われたアクション ボタンとリモート再生の更新について説明します。
アクション ボタンの変更
メディアを再生するアプリでユーザーがメディア コントロールの豊富なセットを利用できるようにするため、Android 13 のメディア コントロールでは、アクション ボタンが PlaybackState アクション状態から導出されます。この変更に伴い、関数 MediaDataManager#createActionsFromState は PlaybackState アクション状態に基づいてアクション ボタン情報を生成します。これは、Auto、アシスタント、Wear といった他の Android プラットフォームにおけるメディア コントロールのレンダリング方法と適合します。
これに対して、Android 12 では、メディア コントロールのアクション ボタンは MediaStyle 通知に追加された通知アクションによって決定されていました。
このアクション ボタンの更新に伴う、アプリと互換性のある変更の概要については、StatusBarManager をご覧ください。
リモート再生 API
Android 13 以降では、さまざまなサーフェスで一貫性のあるメディア エクスペリエンスを提供するため、リモート再生用のメディア コントロールのシステム UI でメディア通知をマークする新しいシステム API Notification#setRemotePlaybackInfo が追加されました。この API により、通知を送信するシステムアプリは次のことができます。
- リモート デバイスで発生したメディアの情報と機能を、メディア コントロールのデフォルトの出力スイッチャーに提供する。
- 必要に応じて出力スイッチャー アフォーダンスを置き換える。
この通知を使用するシステムアプリには、MEDIA_CONTENT_CONTROL 権限が必要です。
また、Notification#setRemotePlaybackInfo API は、以下の extras を追加して、リモート再生デバイスの名前、アイコン、インテントを決定します。
Notification#EXTRA_MEDIA_REMOTE_DEVICENotification#EXTRA_MEDIA_REMOTE_ICONNotification#EXTRA_MEDIA_REMOTE_INTENT
この情報により、システム UI はデフォルトの出力スイッチャー チップデバイス情報を置き換え、リモート再生用のメディア コントロールをローカル メディア コントロールのリストの末尾に追加することができます。
メディア コントロールの実装
OEM は、デフォルトの動作に対するこのような変更に注意する必要があります。アプリのメディア コントロールの生成方法に影響するからです。また、OEM は、新しいシステム API が OEM の出力スイッチャー アフォーダンスで適切に機能することを確認する必要があります。
OEM は変更を行う必要はなく、AOSP のデフォルトの実装を使用できます。
リモート再生のカスタマイズ
OEM のシステムアプリがリモート メディア再生通知を送信する場合、アプリは MEDIA_CONTENT_CONTROL 権限を付与されていれば、オプションで通知用の setRemotePlaybackInfo を呼び出すことができます。ただし、これは必須ではなく、パートナーはカスタマイズしないことを選択できます。
メディア コントロールの検証
システム UI のメディア コントロールをテストするには、手動テストを実行して以下を検証します。
- アプリからメディアを再生する際に、ボタンが想定どおりに機能すること。
- 出力スイッチャーが正しいデバイス情報を表示すること。
リモート再生 API を検証するには、以下のテストを使用します。
NotificationManagerTestの CTS テスト(testMediaStyleRemotePlayback_noPermission、testMediaStyleRemotePlayback_hasPermissionなど)。com.android.systemui.mediaにある単体テスト。
推奨事項については、新しい CDD 要件 [3.8.3.1/H-1-SR] をご覧ください。