Android Studio V3.12環(huán)境下TV開發(fā)教程(九)顯示一張現(xiàn)在玩的牌

Android Studio V3.12環(huán)境下TV開發(fā)教程

(轉(zhuǎn)自Android官網(wǎng)https://developer.android.com/training/tv/start)

文章源自:光谷佳武 https://blog.csdn.net/jiawuhan/article/details/80620508

顯示一張現(xiàn)在玩的牌

在播放器后面或背景中播放媒體時(shí),電視應(yīng)用程序必須顯示正在播放的卡片缸血。?此卡允許用戶返回到當(dāng)前播放媒體的應(yīng)用程序。

當(dāng)存在活動(dòng)的MediaSession時(shí),Android框架會(huì)在主屏幕上顯示正在播放的卡片。?該卡包括媒體元數(shù)據(jù)秧倾,如專輯封面屎暇,標(biāo)題和應(yīng)用程序圖標(biāo)。?當(dāng)用戶選擇該卡時(shí)原在,系統(tǒng)打開該應(yīng)用程序。

本節(jié)介紹如何使用MediaSession類來實(shí)現(xiàn)即時(shí)播放卡文兢。

圖1.在后臺(tái)播放媒體時(shí)顯示正在播放的卡片晤斩。

開始媒體會(huì)話

當(dāng)您的應(yīng)用準(zhǔn)備播放媒體時(shí)創(chuàng)建一個(gè)MediaSession?。?以下代碼片段是如何設(shè)置適當(dāng)?shù)幕卣{(diào)和標(biāo)志的示例:

mSession = new MediaSession(this姆坚,“MusicService”); mSession.setCallback(new MediaSessionCallback()); mSession.setFlags(MediaSession.FLAG_HANDLES_MEDIA_BUTTONS | MediaSession.FLAG_HANDLES_TRANSPORT_CONTROLS);

注意:?正在使用的卡僅顯示設(shè)置了FLAG_HANDLES_TRANSPORT_CONTROLS標(biāo)志的媒體會(huì)話澳泵。

顯示一張現(xiàn)在玩的牌

正在使用的卡僅出現(xiàn)在活動(dòng)會(huì)話中。?播放開始時(shí)兼呵,您必須調(diào)用setActive(true)?兔辅。?您的應(yīng)用程序還必須請(qǐng)求音頻焦點(diǎn)腊敲,如管理音頻焦點(diǎn)中所述?。

private void handlePlayRequest(){ tryToGetAudioFocus(); if(维苔!mSession.isActive()){ mSession.setActive(true); } ...

當(dāng)setActive(false)呼叫停用媒體會(huì)話或另一個(gè)應(yīng)用啟動(dòng)媒體播放時(shí)碰辅,會(huì)從啟動(dòng)器屏幕中刪除該卡。?如果播放完全停止并且沒有活動(dòng)媒體介时,則應(yīng)用程序應(yīng)立即停用媒體會(huì)話没宾。?如果播放暫停,則應(yīng)用程序應(yīng)在延遲后停用媒體會(huì)話沸柔,通常為5到30分鐘循衰。

更新播放狀態(tài)

更新MediaSession的播放狀態(tài),以便卡片可以顯示當(dāng)前媒體的狀態(tài)褐澎。

private void updatePlaybackState(){ long position = PlaybackState.PLAYBACK_POSITION_UNKNOWN;if(mMediaPlayer会钝!= null && mMediaPlayer.isPlaying()){ position = mMediaPlayer.getCurrentPosition(); } PlaybackState.Builder stateBuilder = new PlaybackState.Builder() .setActions(getAvailableActions()); stateBuilder.setState(mState,position工三,1.0f); mSession.setPlaybackState(stateBuilder.build()); } private long getAvailableActions(){ long actions = PlaybackState.ACTION_PLAY_PAUSE | PlaybackState.ACTION_PLAY_FROM_MEDIA_ID | PlaybackState.ACTION_PLAY_FROM_SEARCH; if(mPlayingQueue == null || mPlayingQueue.isEmpty()){return; } if(mState == PlaybackState.STATE_PLAYING){ actions | = PlaybackState.ACTION_PAUSE; } else { actions | = PlaybackState.ACTION_PLAY; } if(mCurrentIndexOnQueue> 0){ actions | = PlaybackState.ACTION_SKIP_TO_PREVIOUS; } if(mCurrentIndexOnQueue

顯示媒體元數(shù)據(jù)

使用setMetadata()方法設(shè)置MediaMetadata?迁酸。?媒體會(huì)話對(duì)象的這種方法可以讓您為正在播放的卡片提供關(guān)于曲目的信息,例如標(biāo)題俭正,副標(biāo)題和各種圖標(biāo)奸鬓。?以下示例假設(shè)您的軌道數(shù)據(jù)存儲(chǔ)在自定義數(shù)據(jù)類MediaData?。

private void updateMetadata(MediaData myData){ MediaMetadata.Builder metadataBuilder = new MediaMetadata.Builder(); //提供對(duì)項(xiàng)目顯示方式的最大控制 //顯示元數(shù)據(jù)中的字段 metadataBuilder.putString(MediaMetadata.METADATA_KEY_DISPLAY_TITLE掸读, myData.displayTitle); metadataBuilder.putString(MediaMetadata.METADATA_KEY_DISPLAY_SUBTITLE全蝶, myData.displaySubtitle); metadataBuilder.putString(MediaMetadata.METADATA_KEY_DISPLAY_ICON_URI, myData.artUri); //至少是傳統(tǒng)支持的標(biāo)題和藝術(shù)家 metadataBuilder.putString(MediaMetadata.METADATA_KEY_TITLE寺枉, myData.title); metadataBuilder.putString(MediaMetadata.METADATA_KEY_ARTIST, myData.artist); //還推薦了一個(gè)用于藝術(shù)品的小位圖 metadataBuilder.putBitmap(MediaMetadata.METADATA_KEY_ART绷落, myData.artBitmap); //添加您的數(shù)據(jù)的其他任何字段 mSession.setMetadata(metadataBuilder.build()); }

回應(yīng)用戶操作

當(dāng)用戶選擇正在使用卡時(shí)姥闪,系統(tǒng)打開擁有該會(huì)話的應(yīng)用程序。?如果您的應(yīng)用程序向setSessionActivity()提供了PendingIntent?砌烁,系統(tǒng)將啟動(dòng)您指定的活動(dòng)筐喳,如下所示。?如果不是函喉,則默認(rèn)系統(tǒng)意圖打開避归。?您指定的活動(dòng)必須提供允許用戶暫停或停止播放的播放控件管呵。

Intent intent = new Intent(mContext, MyActivity.class);? ? PendingIntent pi = PendingIntent.getActivity(context, 99 /*request code*/,? ? ? ? ? ? intent, PendingIntent.FLAG_UPDATE_CURRENT);? ? mSession.setSessionActivity(pi);

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末梳毙,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子捐下,更是在濱河造成了極大的恐慌账锹,老刑警劉巖萌业,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異奸柬,居然都是意外死亡生年,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門廓奕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來抱婉,“玉大人,你說我怎么就攤上這事桌粉≌艏ǎ” “怎么了?”我有些...
    開封第一講書人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵番甩,是天一觀的道長侵贵。 經(jīng)常有香客問我,道長缘薛,這世上最難降的妖魔是什么窍育? 我笑而不...
    開封第一講書人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮宴胧,結(jié)果婚禮上漱抓,老公的妹妹穿的比我還像新娘。我一直安慰自己恕齐,他們只是感情好乞娄,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著显歧,像睡著了一般仪或。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上士骤,一...
    開封第一講書人閱讀 50,050評(píng)論 1 291
  • 那天范删,我揣著相機(jī)與錄音,去河邊找鬼拷肌。 笑死到旦,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的巨缘。 我是一名探鬼主播添忘,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼若锁!你這毒婦竟也來了搁骑?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎靶病,沒想到半個(gè)月后会通,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡娄周,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年涕侈,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片煤辨。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡裳涛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出众辨,到底是詐尸還是另有隱情端三,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布鹃彻,位于F島的核電站郊闯,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蛛株。R本人自食惡果不足惜团赁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望谨履。 院中可真熱鬧欢摄,春花似錦、人聲如沸笋粟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽害捕。三九已至绿淋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間尝盼,已是汗流浹背躬它。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留东涡,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓倘待,卻偏偏與公主長得像疮跑,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子凸舵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容