音声を再生する TV アプリは、ユーザーがホーム画面に戻るか 別のアプリに切り替えた後も再生を継続できます。そのためには、アプリがホーム画面に [この曲なに?] カードを表示する必要があります。このカードにより、ユーザーは音声の再生元を把握し、アプリに戻って メディアの再生を操作できます。
アクティブな
MediaSession が
存在する場合、Android フレームワークはホーム画面に [この曲なに?] カードを表示します。カードにはアルバムアート、タイトル、アプリアイコンといったメディアのメタデータが表示されます。ユーザーがカードを選択すると、
アプリが開きます。
この曲なに?カード
メディア セッションを実装し、セッションをアクティブに設定して、音声フォーカスをリクエストすると、[**この曲なに?**] カードが表示されます。
注: [再生しています] カードは、FLAG_HANDLES_TRANSPORT_CONTROLS フラグが設定されたメディア
セッションに対してのみ表示されます。このフラグは API レベル 26 で非推奨になりました。ただし、下位互換性のために古いデバイスでは引き続き必要となる可能性があります。
`setActive(false)` の呼び出しによりメディアセッションが無効になった場合、または別のアプリがメディアの再生を開始した場合、このカードはランチャー画面から削除されます。setActive(false)再生が
完全に停止した場合は、アクティブなメディアがなければ、メディアセッションを
直ちに無効にします。再生が一時停止した場合は、しばらく待機してから(通常は 5 ~ 30 分後)メディアセッションを無効にします。
カードを更新する
アプリが MediaSession で再生ステータスを更新すると、
[再生しています] カードが更新され、現在のメディアの状態が表示されます。これを行う方法については、
再生ステータスを更新するをご覧ください。
同様に、アプリは
MediaMetadata を更新して、現在のメディアに関する情報(タイトル、サブタイトル、
各種のアイコンなど)を [再生しています] カードに表示できます。これを行う方法については、
メディア メタデータを更新するをご覧ください。
ユーザー アクションに応答する
ユーザーが [この曲なに?] カードを選択すると、セッション中のアプリが開きます。アプリが
PendingIntent を
setSessionActivity() に提供した場合は、
指定したアクティビティが次のコード スニペットに示すように開始されます。提供しなかった場合は、
デフォルトのシステムインテントが開きます。指定したアクティビティは、ユーザーが再生を一時停止または停止できるように再生コントロールを提供する必要があります。
Kotlin
val pi: PendingIntent = Intent(context, MyActivity::class.java).let { intent -> PendingIntent.getActivity( context, 99 /*request code*/, intent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE ) } session.setSessionActivity(pi)
Java
Intent intent = new Intent(context, MyActivity.class); PendingIntent pi = PendingIntent.getActivity(context, 99 /*request code*/, intent, PendingIntent.FLAG_UPDATE_CURRENT); session.setSessionActivity(pi);
許可されるユースケース
[この曲なに?] カードは、ユーザーがアプリを離れたときに音声がバックグラウンドで再生され続けることを想定している場合にのみ使用してください。アプリがピクチャー イン ピクチャーを統合して準拠している場合を除き、動画再生やゲームの音声は常に一時停止する必要があります。