顯示「聽聲辨曲」資訊卡

當電視應用程式在啟動器後方或背景播放媒體時,必須顯示「現正播放」資訊卡。這張資訊卡可讓使用者返回目前正在播放媒體的應用程式。

啟用 MediaSession 時,Android 架構會在主畫面上顯示「現正播放」資訊卡。資訊卡包含專輯封面、名稱和應用程式圖示等媒體中繼資料。 使用者選取資訊卡後,系統會開啟應用程式。

您可以使用 MediaSession 類別實作「聽聲辨曲」資訊卡。

圖 1 在背景播放媒體時,顯示「現正播放」資訊卡。

「聽聲辨曲」資訊卡

實作媒體工作階段、將工作階段設為啟用,並要求音訊焦點後,系統會顯示「現正播放」資訊卡。

注意:只有設有 FLAG_HANDLES_TRANSPORT_CONTROLS 標記的媒體工作階段才會顯示「聽聲辨曲」資訊卡。這個旗標已在 API 級別 26 中淘汰。不過為了顧及回溯相容性,舊版裝置上可能還是需要這個標記。

setActive(false) 呼叫停用媒體工作階段,或其他應用程式啟動媒體播放時,資訊卡就會從啟動器畫面中移除。如果完全停止播放且沒有使用中的媒體,請立即停用媒體工作階段。如果播放暫停,請在延遲後停用媒體工作階段,通常為 5 到 30 分鐘。

更新卡片

每當應用程式更新 MediaSession 中的播放狀態時,「聽聲辨曲」資訊卡就會更新,顯示目前的媒體狀態。如要瞭解操作方式,請參閱「更新播放狀態」。

同樣地,應用程式也可以更新 MediaMetadata,在「聽聲辨曲」資訊卡中提供目前媒體的資訊,例如標題、字幕和各種圖示。如要瞭解操作方式,請參閱「更新媒體中繼資料」。

回應使用者動作

當使用者選取「現正播放」資訊卡時,系統會開啟擁有工作階段的應用程式。如果應用程式為 setSessionActivity() 提供 PendingIntent,系統會啟動您指定的活動,如以下程式碼片段所示。如果沒有,則會開啟預設系統意圖。您指定的活動必須提供播放控制項,讓使用者暫停或停止播放。

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);