本發(fā)明涉及基于Android系統(tǒng)的智能電視,應(yīng)用于Android智能電視TV與媒體場(chǎng)景切換的管理,屬于智能電視技術(shù)領(lǐng)域。
背景技術(shù):
智能電視后臺(tái)服務(wù)很多,用戶在觀看TV時(shí),某個(gè)后臺(tái)服務(wù)可能會(huì)推送一段音頻,電視端TV也在繼續(xù)播放,就可能同時(shí)出現(xiàn)兩種聲音,也可能被強(qiáng)制停止切換到音頻,給用戶帶來很不好的體驗(yàn),同時(shí),電視場(chǎng)景比較復(fù)雜,在場(chǎng)景切換時(shí),如何及時(shí)釋放與申請(qǐng)資源,需要一種策略來管理場(chǎng)景切換。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明主要是利用創(chuàng)建的Native Service模塊RM,通過創(chuàng)建的場(chǎng)景列表來管理場(chǎng)景的切換。
本發(fā)明是這樣實(shí)現(xiàn)的:
一種Android智能電視場(chǎng)景管理方法,包括:
首先,該發(fā)明在Android系統(tǒng)上實(shí)現(xiàn),在c++代碼層新建一個(gè)Native Service,由Android系統(tǒng)的Init.rc啟動(dòng),Native Service里面新建一個(gè)模塊RM,用來管理整個(gè)TV場(chǎng)景,在RM模塊中把電視場(chǎng)景設(shè)置為ATV、DTV、MMP、OTHER 4種類型,ATV場(chǎng)景定義為ATV節(jié)目源在有信號(hào)狀態(tài),DTV場(chǎng)景定義為DTV節(jié)目源在有信號(hào)狀態(tài),MMP定義為視頻播放狀態(tài),OTHER定義非播放狀態(tài)場(chǎng)景。整個(gè)RM處于一個(gè)獨(dú)立線程中,RM中場(chǎng)景切換的接口通過jni層提供給JAVA應(yīng)用層,不同的應(yīng)用調(diào)用這個(gè)接口切換到不同的場(chǎng)景。場(chǎng)景切換是同步進(jìn)行的,在切換場(chǎng)景的接口里面有互斥鎖,保證在上一個(gè)場(chǎng)景切換動(dòng)作沒有完成情況,下一個(gè)場(chǎng)景動(dòng)作不能開始,任何時(shí)候TV只處于一個(gè)場(chǎng)景狀態(tài)。
其次,RM在系統(tǒng)啟動(dòng)后,會(huì)創(chuàng)建一個(gè)場(chǎng)景列表,用來保存應(yīng)用申請(qǐng)的場(chǎng)景類型,場(chǎng)景列表中加入的元素包括CallingPid和申請(qǐng)的場(chǎng)景類型,最初場(chǎng)景列表是空的。TV應(yīng)用通過API調(diào)用切換場(chǎng)景時(shí),會(huì)通過CallingPid去查找場(chǎng)景列表中是否存在該CallingPid,如果沒有就新建一個(gè)對(duì)象,加入到場(chǎng)景列表中,如果存在就更新內(nèi)容。如果Android系統(tǒng)檢測(cè)到上層應(yīng)用掛掉,RM會(huì)根據(jù)CallingPid來切換到另外一個(gè)約定的場(chǎng)景。例如當(dāng)前在播放TV,申請(qǐng)的場(chǎng)景是ATV,如果TV應(yīng)用異常退出,底層就可能還在播放,用戶看到的就是電視有視頻、聲音,還在播放,但是已經(jīng)不能進(jìn)行換臺(tái)等操作了。這個(gè)時(shí)候,RM通過Binder捕獲到TV應(yīng)用異常退出通知后,主動(dòng)切換到另外一個(gè)場(chǎng)景OTHER,OTHER狀態(tài)下,實(shí)現(xiàn)了黑屏,靜音。這時(shí)用戶可以通過重新啟動(dòng)TV應(yīng)用來播放,進(jìn)行換臺(tái)等。
最后,通過Android Binder標(biāo)準(zhǔn)通信流程,依賴Android系統(tǒng)的AM機(jī)制,實(shí)時(shí)將Android最上層全屏應(yīng)用頁面的包名通過binder告知的RM,RM采用字符串形式保留在本地。例如當(dāng)前正在播放TV,當(dāng)?shù)谌綉?yīng)用推送視頻時(shí),這里可能是用戶通過手機(jī)推送的一部視頻,也可能是TV系統(tǒng)里面一些應(yīng)用主動(dòng)推送的廣告視頻,前面一種是我們希望播放的,第二種是需要避免的,兩種視頻播放時(shí),都會(huì)通過接口申請(qǐng)MMP場(chǎng)景,這時(shí)我們會(huì)根據(jù)前面保存的包名做判斷,如果是我們?cè)试S的,就申請(qǐng)MMP場(chǎng)景成功,開始播放視頻,如果不是就返回申請(qǐng)場(chǎng)景失敗,繼續(xù)播放TV。
通過上面的方式,實(shí)現(xiàn)了一套電視場(chǎng)景的管理方法,控制了場(chǎng)景切換,解決了以前切換場(chǎng)景混亂的問題。通過實(shí)時(shí)獲取最上層全屏應(yīng)用頁面的包名做對(duì)比,來決定是否播放MMP,可以管控部分播放方式。通過資源列表管理,可以實(shí)現(xiàn)在客戶端掛掉之后,自動(dòng)切換到另外一個(gè)場(chǎng)景。
附圖說明
圖1為場(chǎng)景管理總圖,各個(gè)場(chǎng)景通過Native Service RM來切換,實(shí)現(xiàn)統(tǒng)一管理。
圖2為后臺(tái)服務(wù)推送一段音頻,Native Service RM判斷的流程圖。
具體實(shí)施方式
把Android電視場(chǎng)景區(qū)分為PLAYER_ATV,PLAYER_DTV,PLAYER_MMP,PLAYER_OTHER,PLAYER_ATV場(chǎng)景為模式電視播放場(chǎng)景,PLAYER_DTV場(chǎng)景為數(shù)字電視播放場(chǎng)景,PLAYER_MMP為本地媒體或者網(wǎng)絡(luò)播放視頻場(chǎng)景,PLAYER_OTHER為非播放狀態(tài)場(chǎng)景,具體為當(dāng)前非ATV播放,非DTV播放,非媒體播放。
構(gòu)建一個(gè)Native Service RM,如圖1所示,ATV apk,DTV apk為廠商應(yīng)用,應(yīng)用在啟動(dòng)時(shí)需要向Native Service RM申請(qǐng)對(duì)應(yīng)場(chǎng)景,離開時(shí)需要把場(chǎng)景切換到OTHER場(chǎng)景,MMP場(chǎng)景則通過CALLBACK向Native Service RM申請(qǐng)。Native Service RM切換場(chǎng)景在同步線程中完成,在切換到下一個(gè)場(chǎng)景時(shí),需要等待上一個(gè)場(chǎng)景把資源釋放掉,同時(shí)將應(yīng)用信息保存到RM中。
Native Service RM提供統(tǒng)一的資源釋放接口Release,用來將場(chǎng)景切換為PLAYER_OTHER,具體表現(xiàn)為視頻黑屏,靜音。為了避免ATV調(diào)用該接口將正在播放的DTV切換到OTHER場(chǎng)景,要求該API只有在對(duì)應(yīng)場(chǎng)景下才能調(diào)用,如ATV apk只能在PLAYER_ATV場(chǎng)景下調(diào)用該接口。
在TV播放狀態(tài)下,如果是微信發(fā)送一段特殊的音頻amr格式,且需要在TV狀態(tài)下播放該音頻,Native Service RM會(huì)檢查該段音頻格式大小以及是否可以播放,如果可以,則允許該音頻播放(不會(huì)切換場(chǎng)景),播放過程中,將TV的音量值減小,待音頻播放完成之后,在恢復(fù)TV的音量值。
在TV播放狀態(tài)下,如果是用戶通過手機(jī)等第三方推送的一首mp3,則在電視端有對(duì)應(yīng)的apk啟動(dòng)來播放,這時(shí)framework會(huì)通過binder把最新的package信息傳遞給Native Service RM,當(dāng)callback申請(qǐng)MMP場(chǎng)景時(shí),會(huì)和預(yù)制的apk進(jìn)行對(duì)比,不一致則允許切換場(chǎng)景,播放該視頻。
在TV播放狀態(tài)下,如果是電視端內(nèi)部的某個(gè)服務(wù)推送一段音頻,該音頻格式不是特殊格式,并且沒有對(duì)應(yīng)的應(yīng)用啟動(dòng)來播放,則會(huì)被Native Service RM阻止,繼續(xù)播放TV。
盡管這里參照本發(fā)明的解釋性實(shí)施例對(duì)本發(fā)明進(jìn)行了描述,上述實(shí)施例僅為本發(fā)明較佳的實(shí)施方式,本發(fā)明的實(shí)施方式并不受上述實(shí)施例的限制,應(yīng)該理解,本領(lǐng)域技術(shù)人員可以設(shè)計(jì)出很多其他的修改和實(shí)施方式,這些修改和實(shí)施方式將落在本申請(qǐng)公開的原則范圍和精神之內(nèi)。