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