如果電視應用程式正在播放音訊,使用者返回主畫面或切換至其他應用程式後,應用程式可能會繼續播放。如要這麼做,應用程式必須在主畫面上提供「現正播放」資訊卡。使用者可透過這張資訊卡瞭解音訊來源,並返回應用程式控制媒體播放。
只要有活動中的 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 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);
可接受的用途
只有在使用者離開應用程式後,仍希望音訊在背景繼續播放時,才應使用「現正播放」資訊卡。除非應用程式整合並符合子母畫面規定,否則影片播放或遊戲音效一律應暫停。