「この曲なに?」カードを表示する

音声を再生する TV アプリは、ユーザーがホーム画面に戻った後も、または別のアプリに切り替えた後も再生を継続できます。そのためには、アプリがホーム画面に「この曲なに?」カードを表示する必要があります。このカードにより、ユーザーは音声のソースを確認し、アプリに戻ってメディアの再生をコントロールできます。

アクティブな MediaSession が存在する場合、Android フレームワークはホーム画面に「この曲なに?」カードを表示します。カードには、アルバムアート、タイトル、アプリアイコンなどのメディア メタデータが含まれます。ユーザーがカードを選択すると、アプリが開きます。

「この曲なに?」カード

メディア セッションを実装し、セッションをアクティブに設定して音声フォーカスをリクエストすると、[この曲なに?] カードが表示されます。

注: [この曲なに?] カードは、FLAG_HANDLES_TRANSPORT_CONTROLS フラグが設定されているメディア セッションでのみ表示されます。このフラグは API レベル 26 で非推奨になりました。ただし、古いデバイスでは後方互換性を維持するため、このフラグが引き続き必要になる場合があります。

setActive(false) 呼び出しによってメディア セッションが無効になった場合、または別のアプリがメディアの再生を開始した場合、このカードはランチャー画面から削除されます。再生が完全に停止し、アクティブなメディアがない場合は、直ちにメディア セッションを無効にします。再生が一時停止する場合は、遅延(通常は 5 ~ 30 分)後にメディア セッションを無効にします。

カードの更新

アプリが MediaSession の再生状態を更新するたびに、[この曲なに?] カードが更新され、現在のメディアの状態が表示されます。方法については、再生状態を更新するをご覧ください。

同様に、アプリで MediaMetadata をアップデートして、現在のメディアに関する情報(タイトル、サブタイトル、各種アイコンなど)を [この曲なに?] カードに提供することもできます。方法については、メディア メタデータを更新するをご覧ください。

ユーザー アクションに応答する

ユーザーが [この曲なに?] カードを選択すると、セッションを所有するアプリを開きます。アプリが PendingIntentsetSessionActivity() に提供すると、次のコード スニペットに示すように、指定されたアクティビティがシステムが起動します。そうでない場合は、デフォルトのシステム インテントが開きます。指定するアクティビティは、ユーザーが再生を一時停止または停止できる再生コントロールを提供する必要があります。

Kotlin

val pi: PendingIntent = Intent(context, MyActivity::class.java).let { intent ->
    PendingIntent.getActivity(
            context, 99 /*request code*/,
            intent,
            PendingIntent.FLAG_UPDATE_CURRENT
    )
}
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);

認められるユースケース

「この曲なに?」カードは、アプリから離れるときに音声がバックグラウンドで再生され続けることをユーザーが想定している場合にのみ使用してください。アプリがピクチャー イン ピクチャーに統合され、準拠している場合を除き、ゲームの動画再生や音声は常に一時停止する必要があります。