播放音訊的電視應用程式可能會在使用者返回主畫面或切換至其他應用程式後,繼續播放音訊。如要執行這項操作,應用程式必須在主畫面中提供「現正播放」資訊卡。這張資訊卡可讓使用者瞭解音訊來源並返回應用程式,以控制媒體播放。
只要正在使用 MediaSession
,Android 架構就會在主畫面顯示「現正播放」資訊卡。資訊卡包含媒體中繼資料,例如專輯封面、標題和應用程式圖示。使用者選取卡片後,系統就會開啟應用程式。
「聽聲辨曲」資訊卡
實作媒體工作階段、將工作階段設為啟用中並要求音訊焦點後,系統會顯示「聽聲辨曲」資訊卡。
注意:只有已設定 FLAG_HANDLES_TRANSPORT_CONTROLS
標記的媒體工作階段才會顯示「現正播放」資訊卡。此標記已於 API 級別 26 淘汰。不過,為了顧及回溯相容性,在舊版裝置上可能仍需要這個標記。
當 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 ) } 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);
接受的用途
只有在使用者預期在離開應用程式時,音訊會繼續在背景播放的情況下,才應使用「現正播放」資訊卡。除非應用程式整合了子母畫面,且符合相關政策規定,否則遊戲中的影片播放或音效應一律暫停。