楊立揚(yáng),成國強(qiáng)
(江蘇省公用信息有限公司,江蘇 南京 210000)
基于個(gè)推消息推送系統(tǒng)的手機(jī)遙控器技術(shù)研究
楊立揚(yáng),成國強(qiáng)
(江蘇省公用信息有限公司,江蘇 南京 210000)
隨著互聯(lián)網(wǎng)電視和移動(dòng)互聯(lián)網(wǎng)的飛速發(fā)展,我們正身處一個(gè)多屏的時(shí)代,多屏之間的互動(dòng)因其可以為用戶提供更好的體驗(yàn),而日益成為互聯(lián)網(wǎng)領(lǐng)域的研究熱點(diǎn)。多屏互動(dòng)的一項(xiàng)關(guān)鍵技術(shù)就是手機(jī)遙控器。文章首先介紹了手機(jī)遙控器的基本原理,然后介紹了目前多屏設(shè)備之間互聯(lián)的主流方式及其局限性,最后提出了一種新的基于個(gè)推消息推送系統(tǒng)的手機(jī)遙控器技術(shù)方案。
遙控器;多屏互動(dòng);互聯(lián)網(wǎng)電視
隨著互聯(lián)網(wǎng)電視與移動(dòng)互聯(lián)網(wǎng)的飛速發(fā)展,我們正身處一個(gè)多屏的時(shí)代,由原來簡(jiǎn)單的電視、電腦雙屏,發(fā)展到電視、電腦、智能手機(jī)、平板Pad、智能手表、Google眼鏡、車載屏幕等多個(gè)屏幕構(gòu)成的生態(tài)系統(tǒng),這一生態(tài)系統(tǒng)正日益深刻地影響著人們的日常生活。如何在多個(gè)屏幕之間互動(dòng),形成最佳的用戶體驗(yàn),成為互聯(lián)網(wǎng)領(lǐng)域的熱門研究議題。
目前電視、電腦和智能手機(jī)是人們?nèi)粘I钪薪佑|最多的三大屏幕,它們各有特點(diǎn):電視屏幕大,視頻觀看體驗(yàn)好;電腦功能全,儲(chǔ)存空間大;手機(jī)攜帶方便,更便捷;用戶使用電視觀看視頻雖然觀看體驗(yàn)好,但是在操作便捷和內(nèi)容資源上遠(yuǎn)不及手機(jī)和電腦。多屏互動(dòng)技術(shù)就是旨在將多個(gè)屏幕的優(yōu)勢(shì)進(jìn)行融合,實(shí)現(xiàn)最佳的用戶體驗(yàn)。
多屏互動(dòng)的一項(xiàng)關(guān)鍵技術(shù)是手機(jī)遙控器功能,即通過在手機(jī)上安裝遙控器客戶端,并將手機(jī)與電視機(jī)頂盒等設(shè)備進(jìn)行互聯(lián),就能夠取代常規(guī)的電視物理遙控器,直接在手機(jī)上方便快捷地完成電視遙控器的各項(xiàng)操作,這樣再也不用擔(dān)心遙控器找不到的情況,此外,多屏互動(dòng)手機(jī)遙控器還能夠充當(dāng)游戲手柄和語音話筒,功能相當(dāng)豐富。本文中的手機(jī)遙控器主要指的是智能手機(jī)遙控電視機(jī)頂盒,事實(shí)上,通過手機(jī)遙控其他設(shè)備原理和實(shí)現(xiàn)方案是類似的。
手機(jī)遙控器的基本原理是:通過無線連接協(xié)議或消息系統(tǒng)建立智能手機(jī)與電視機(jī)頂盒的設(shè)備連接通道,當(dāng)用戶在手機(jī)遙控器客戶端上點(diǎn)擊按鍵指令(KeyCode)時(shí),客戶端通過手機(jī)與電視機(jī)機(jī)頂盒之間的連接通道將該KeyCode發(fā)給機(jī)頂盒中的駐留進(jìn)程,機(jī)頂盒中的駐留進(jìn)程收到指令后,解析出KeyCode,然后向機(jī)頂盒操作系統(tǒng)模擬發(fā)送KeyCode對(duì)應(yīng)的遙控器按鍵事件(KeyEvent),操作系統(tǒng)接受并處理此KeyEvent,從而實(shí)現(xiàn)了手機(jī)遙控電視機(jī)頂盒的目的。
從手機(jī)遙控器的基本原理可知,其實(shí)現(xiàn)基礎(chǔ)是首先需要實(shí)現(xiàn)智能手機(jī)與電視機(jī)頂盒的互聯(lián),在兩者之間建立連接通道用于發(fā)送按鍵指令。實(shí)現(xiàn)手機(jī)與電視機(jī)頂盒互聯(lián)的方式有很多,但大體可以分為兩類:(1)通過標(biāo)準(zhǔn)的設(shè)備連接協(xié)議;(2)通過消息系統(tǒng)[1]。
目前主流的多屏互動(dòng)設(shè)備連接協(xié)議有DLNA(Digital Living Network Alliance),AirPlay,Miracast等[2]。
DLNA是索尼、英特爾、微軟等發(fā)起的一套 PC、移動(dòng)設(shè)備、消費(fèi)電器之間互聯(lián)互通的協(xié)議,其宗旨是“隨時(shí)隨地享受音樂、照片和視頻”,通過DLNA互聯(lián)的前提是設(shè)備要支持DLNA協(xié)議。
AirPlay是蘋果公司開發(fā)的一套設(shè)備互聯(lián)協(xié)議,通過WiFi,可以將iOS設(shè)備上的圖片、音頻、視頻以無線的方式傳輸?shù)街С諥irPlay的設(shè)備上。AirPlay具備DLNA所沒有的鏡像功能,可將iPhone等設(shè)備的畫面無線傳輸?shù)诫娨暽线M(jìn)行同屏展示,即iPhone顯示什么,電視屏幕就顯示什么。
Miracast是WiFi聯(lián)盟針對(duì)WiFi Display技術(shù)實(shí)現(xiàn)產(chǎn)品認(rèn)證的項(xiàng)目,該技術(shù)基于MAC 層點(diǎn)對(duì)點(diǎn)(WiFi Direct)傳輸,實(shí)現(xiàn)音視頻數(shù)據(jù)無線傳輸和播放。支持此標(biāo)準(zhǔn)的設(shè)備可通過無線方式分享圖片或視頻畫面,Miracast也支持鏡像功能。
上述3種協(xié)議都是通過無線將手機(jī)與機(jī)頂盒設(shè)備進(jìn)行互聯(lián),使用上具備一定的局限性。
(1)Airplay主要用于蘋果設(shè)備,DLNA和MiraCast也只能用于已內(nèi)嵌支持DLNA和MiraCast協(xié)議的設(shè)備上,設(shè)備使用范圍上有一定的局限性。
(2)DLNA,AirPlay,MiraCast都是通過無線連接智能手機(jī)和機(jī)頂盒,要求智能手機(jī)和機(jī)頂盒必須處于同一個(gè)無線局域網(wǎng)內(nèi),但目前電信運(yùn)營商的IPTV電視很多都是在私網(wǎng)建設(shè)的,而手機(jī)通過4G連接的是公網(wǎng),公私網(wǎng)不通,所以兩者無法處在同一無線局域網(wǎng)內(nèi),這就大大限制了智能手機(jī)與電視機(jī)頂盒互聯(lián)的范圍。
與之相比,基于消息系統(tǒng)的手機(jī)與機(jī)頂盒的互聯(lián)方式則沒有上述限制,本文提出一種基于個(gè)推消息推送系統(tǒng)的手機(jī)遙控器方案,該方案突破了現(xiàn)有多屏互動(dòng)主流協(xié)議DLNA,AirPlay,MiraCast的局限性,智能手機(jī)和機(jī)頂盒無需內(nèi)嵌任何協(xié)議,也無需在同一局域網(wǎng)內(nèi),基于個(gè)推的消息推送系統(tǒng),橫跨公私網(wǎng)也可實(shí)現(xiàn)設(shè)備之間的互聯(lián),具有廣泛的適用性。
為實(shí)現(xiàn)智能手機(jī)向機(jī)頂盒推送遙控器按鍵指令,需要機(jī)頂盒端有一個(gè)常駐進(jìn)程,該常駐進(jìn)程首先與云端的消息系統(tǒng)建立TCP長(zhǎng)連接,這里的長(zhǎng)連接,指在一個(gè)TCP連接上可以連續(xù)發(fā)送多個(gè)數(shù)據(jù)包,在TCP連接保持期間,如果沒有數(shù)據(jù)包發(fā)送,需要雙方發(fā)檢測(cè)包以維持此連接。通過與云端消息系統(tǒng)的長(zhǎng)連接,機(jī)頂盒就保持了一條消息通道,智能手機(jī)可以通過向云端消息系統(tǒng)發(fā)送指令,并經(jīng)過這條長(zhǎng)連接消息通道,實(shí)現(xiàn)向機(jī)頂盒發(fā)送消息指令的目的。
本文的方案中,我們借助個(gè)推來實(shí)現(xiàn)消息系統(tǒng)的能力。個(gè)推作為國內(nèi)專業(yè)的推送技術(shù)服務(wù)商,提供的消息推送解決方案,可以幫助開發(fā)者快捷建立消息推送系統(tǒng)。為使用個(gè)推的消息推送系統(tǒng),開發(fā)者需要在客戶端(包括Android設(shè)備和iOS設(shè)備)集成個(gè)推的客戶端SDK,建立與個(gè)推云端系統(tǒng)的長(zhǎng)連接消息通道。
客戶端應(yīng)用集成個(gè)推的客戶端SDK后,個(gè)推SDK會(huì)給客戶單分配一個(gè)唯一的ClientID,客戶端啟動(dòng)后,個(gè)推會(huì)啟動(dòng)駐留Service,該Service和個(gè)推服務(wù)器建立一個(gè)長(zhǎng)連接,通過這個(gè)長(zhǎng)連接,個(gè)推服務(wù)器就可以隨時(shí)以ClientID為標(biāo)識(shí)向客戶端應(yīng)用推送消息,個(gè)推的SDK service在收到云端服務(wù)器推送的消息后,會(huì)發(fā)出廣播透?jìng)飨?,要接收的?yīng)用通過注冊(cè)BroadcastReceive來接收透?jìng)鞯南ⅰ榱酥С珠_發(fā)者通過自有Web服務(wù)調(diào)用個(gè)推服務(wù)器推送消息,個(gè)推還提供了服務(wù)器端API,開發(fā)者集成了服務(wù)端API后,即可從自有Web服務(wù)中向客戶端發(fā)送消息。
通過個(gè)推消息系統(tǒng),手機(jī)中的遙控器客戶端就可以把按鍵指令發(fā)送給機(jī)頂盒端的駐留程序,接下來駐留程序要做的就是從消息中解析出按鍵指令,然后向系統(tǒng)模擬發(fā)送相應(yīng)的按鍵指令。模擬發(fā)送按鍵指令在不同的操作系統(tǒng)上方式不同,本文以目前使用最廣泛的Android機(jī)頂盒為例,通過Android Instrumentation框架向Android系統(tǒng)發(fā)送模擬按鍵。
Instrumentation是Android測(cè)試的核心框架,可使用它進(jìn)行Android應(yīng)用的單元測(cè)試和自動(dòng)化測(cè)試,為了對(duì)應(yīng)用程序進(jìn)行精確控制,Instrumentation提供了專門的向系統(tǒng)或應(yīng)用程序發(fā)送按鍵的系列功能API,如sendKeyDownUpSync等,因此我們的駐留程序可以使用Android Instrumentation框架向Android系統(tǒng)發(fā)送模擬按鍵。
通過智能手機(jī)向機(jī)頂盒(以Android機(jī)頂系統(tǒng)盒為例)推送遙控器指令的完整流程如圖1所示。
圖1 遙控器指令推送流程
步驟1:智能手機(jī)中的遙控器客戶端(集成了個(gè)推客戶端SDK)上,用戶點(diǎn)擊了手機(jī)遙控器界面上的某個(gè)按鍵,按鍵被轉(zhuǎn)換成Android機(jī)頂盒認(rèn)可的KeyCode。手機(jī)遙控器客戶端調(diào)用自有Web服務(wù)器的指令推動(dòng)接口,請(qǐng)求把KeyCode推送到指定ClientID的Android機(jī)頂盒上。
步驟2:自有Web服務(wù)器接口收到請(qǐng)求后,調(diào)用個(gè)推消息推送系統(tǒng)API,把KeyCode和ClientID透?jìng)鹘o個(gè)推消息推送系統(tǒng)。
步驟3:個(gè)推消息推送系統(tǒng)根據(jù)ClientID找到對(duì)應(yīng)的機(jī)頂盒,然后通過與該機(jī)頂盒對(duì)應(yīng)的TCP長(zhǎng)連接將消息推送給該機(jī)頂盒的個(gè)推Service,個(gè)推Service收到消息后會(huì)把KeyCode解析出來,針對(duì)解析出來的KeyCode,機(jī)頂盒中的駐留進(jìn)程調(diào)用Android Instrumentation框架中的sendKeyDownUpSync方法向Android系統(tǒng)發(fā)送模擬按鍵指令,Android收到后就會(huì)執(zhí)行KeyCode指令,完成KeyCode按鍵操作,從而實(shí)現(xiàn)了手機(jī)對(duì)Android機(jī)頂盒的遙控功能。
步驟4:駐留程序成功將KeyCode轉(zhuǎn)發(fā)給Android系統(tǒng)后,需要將指令處理結(jié)果反饋給智能手機(jī)的遙控器客戶端,此時(shí)駐留程序會(huì)調(diào)用自有Web服務(wù)器的指令推送接口,要求把處理結(jié)果推送到指定ClientID的智能手機(jī)上。
步驟5:自有Web服務(wù)器接口收到請(qǐng)求后,調(diào)用個(gè)推消息推送系統(tǒng)API,把處理結(jié)果和智能手機(jī)的ClientID透?jìng)鹘o個(gè)推消息推送系統(tǒng)。
步驟6:個(gè)推消息推送系統(tǒng)根據(jù)ClientID找到對(duì)應(yīng)的智能手機(jī),然后通過與該手機(jī)對(duì)應(yīng)的TCP長(zhǎng)連接將消息推送給該手機(jī)的個(gè)推Service,個(gè)推Service會(huì)把消息廣播給手機(jī)上的遙控器客戶端,遙控器客戶端解析出指令執(zhí)行結(jié)果,從而實(shí)現(xiàn)一個(gè)完整的閉環(huán)遙控指令。
多屏?xí)r代的來臨,催生了多屏互動(dòng)技術(shù)的研究,作為多屏互動(dòng)一項(xiàng)關(guān)鍵技術(shù),手機(jī)遙控器打通了操作指令在不同屏幕之間的流轉(zhuǎn)通道,為用戶省去了物理遙控器設(shè)備,有效提升了用戶體驗(yàn)?,F(xiàn)有主流的設(shè)備互聯(lián)協(xié)議DLNA,AirPlay,MiraCast雖然能夠有效實(shí)現(xiàn)多屏互聯(lián)并共享圖片、視頻,但它們只能在已內(nèi)嵌支持上述協(xié)議的設(shè)備上使用,且不同設(shè)備必須要處于相同局域網(wǎng)內(nèi),而目前我們國內(nèi)的現(xiàn)狀是,終端設(shè)備廠家眾多,大量的互聯(lián)網(wǎng)電視是以私網(wǎng)IPTV形態(tài)承載的,所以基于DLNA,AirPlay,MiraCast的多屏方案使用上具有較大的局限性。因此,本文提出了一種不限設(shè)備,不限網(wǎng)絡(luò)的多屏手機(jī)遙控器方案,基于個(gè)推提供的消息推送能力,實(shí)現(xiàn)智能手機(jī)向電視機(jī)頂盒推送遙控器指令,機(jī)頂盒中的駐留程序接收指令后,通過Android Instrumentation框架向Android系統(tǒng)發(fā)送模擬按鍵事件,從而實(shí)現(xiàn)了智能手機(jī)對(duì)機(jī)頂盒的遙控操作。
[1] 余澤喜,王香婷,馬婷婷.多屏互動(dòng)系統(tǒng)的研究與實(shí)現(xiàn)[J].智能計(jì)算機(jī)與應(yīng)用,2012(1):69-70.
[2] 魏崢,施唯佳,祝谷喬.互聯(lián)網(wǎng)視頻中多屏互動(dòng)技術(shù)的應(yīng)用[J].電信科學(xué),2014(5):27-32.
Study on mobile phone remote control technology based on getui message push system
Yang Liyang, Cheng Guoqiang
(Jiangsu Public Information Company Limited, Nanjing 210000, China)
With the rapid development of IPTV and mobile Internet, now we are in a multi screen era. The multi screen interaction become a research hot spot in the fi eld of Internet because it can provide a better experience for users. One of the key technologies of multi screen interaction is mobile phone remote control. This paper introduces the basic principle of mobile phone remote control, and then introduces the current mainstream mode of interconnection between multi screen devices and their limitations, and fi nally puts forward a new mobile phone remote control solution which is based on getui message push system.
remote control; multi screen interaction; IPTV
楊立揚(yáng)(1979— ),男,江蘇南京人,高級(jí)工程師,碩士;研究方向:IPTV與互聯(lián)網(wǎng)電視。