adb的那点小事——360电视助手实现研究
歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明:http://blog.csdn.net/zhgxhuaa
1.???前言
1.1.??行業(yè)背景簡單介紹
當下,智能家居與智能穿戴設備無疑是繼智能手機后兩個最熱門的方向。而智能家居在占領用戶“客廳”的行動中。電視無疑占領著一個十分重要的位置。
近期兩年,智能電視(包含盒子),發(fā)展的如火如荼,引發(fā)了一波電視換機潮。如今購買電視,不是智能電視,甚至都不好意思拿出來說。
然而,國內(nèi)移動應用市場激戰(zhàn)正酣的三巨頭(百度、360、騰訊)在電視應用分發(fā)上都鮮有舉動,市面上僅僅有一些小公司在做,當中做的還算不錯的有:奇珀市場、愛家電視應用市場。
直到在今年(2014年)4月360推出了“360電視助手”以及”360電視助手手機端”,電視市場逐漸開始改變。
1.2.??一次糟糕的個人體驗
講一個小故事:一張SD卡引發(fā)的血案。
背景:
在去年的時候,我購買了2臺創(chuàng)維的Android智能電視和一臺大麥盒子。拿到電視以后。我僅僅有一個非常easy的想法:我不想花錢看電視,我要在電視上面看優(yōu)酷、看愛奇藝、看騰訊視頻。
現(xiàn)實情況是。電視廠商為了推廣自己的付費視頻。在電視機自帶的電子市場中,根本沒有這些應用。
看到這里有些朋友會說,你找張SD卡把應用拷貝進去,然后依照不即可了?沒錯。但是。我木有SD卡呀……于是開始了一段崎嶇的折騰之路。
我的坎坷看片經(jīng)歷:
1、??打開電視瀏覽器搜索優(yōu)酷下載。提示”沒有SD卡下載不了”
2、??安裝電視市場中的QQ,遠程發(fā)生優(yōu)酷到電視,提示”沒有SD卡,無法接收”
3、??于是乎在絞盡腦汁之后。在QQ的”很多其它“里面我找到了”應用寶”。這里真要慶幸哥們是做開發(fā)的啊。否則預計打死都找不到這里。
此過程全然通過鼠標進行,遙控器操作不了。
4、??在H5的應用寶中搜索”豌豆莢“,安裝后。在里面搜索優(yōu)酷,提示”沒有SD卡下載不了”;果斷卸載“豌豆莢”。安裝“百度手機助手”。提示”沒有SD卡下載不了”……到這里哥們已經(jīng)接近崩潰了。
5、??最后在H5的應用寶中下載應用寶client,發(fā)現(xiàn)沒有SD卡也能夠下載(這里說一下應用寶在沒有SD卡時會先下載到/data/文件夾)。于是乎感嘆“應用寶真好。”。
6、??帶著從絕望中剛恢復過來的喜悅,在應用寶中搜索優(yōu)酷,下載安裝完畢、打開。
尼瑪。是橫屏的有木有?!原來手機市場里面一般都僅僅有手機和pad的應用,木有TV版本號。不僅屏幕是橫的,并且不支持遙控器。
那究竟要怎么辦?我僅僅想看個片而已呀,My God?!!。
7、??幸虧哥們練過!我想到了沒有SD卡。我可不能夠掛載一張?zhí)摂M的SD卡到電視上?于是開始了新一輪驗證。
8、??在應用寶中,下載“ES文件瀏覽器”。然后在個人電腦中注冊申請“百度云”賬號,在“ES文件瀏覽器”的設置中與百度云綁定。然后在“ES文件瀏覽器”中掛載虛擬存儲。
9、?在電腦上搜索TV版的優(yōu)酷、愛奇藝等,將這些APK復制到百度云里面去。然后在電視機上打開“ES文件瀏覽器”。找到掛載的虛擬存儲位置,點擊APK安裝。最終成功安裝了!當看到電視上出現(xiàn)優(yōu)酷的畫面是。哥們都要淚奔了,有木有……
整個過程下來。浪費了哥們大半個下午的時間。
或許有些人會說,怎么不通過電腦USB連接。然后安裝。
可是USB須要驅(qū)動呀…..并且對小白用戶的話,是根本不可能通過USB安裝應用的。
1.3.??360電視助手體驗
前面說過,我購買了2臺電視和一臺盒子。在購買盒子的時候,我無意中發(fā)現(xiàn)了“360電視助手”,于是乎我在前面的體驗一下子簡單多了:掃描局域網(wǎng)、建立連接,然后在手機端選擇自己喜歡的應用安裝。發(fā)現(xiàn)盒子就已經(jīng)給我安裝好了。然后在手機上選擇一個電影打開播放,此時電視也開始播放了…..
整個過程下來,不超過5分鐘。
1.4.??360電視助手概覽
首先看一下360電視助手TV端的界面:
|
|
|
|
|
|
|
|
?
以下是TV端首頁截圖:
?
以下是手機端的截圖:
?
1.5.??360電視助手的創(chuàng)新點
那這款360電視助手與其它的手機助手或者電視應用市場相比有什么特別之處呢?
一般的電視電視版助手有兩大功能:一是幫助用戶下載和更新應用。二是做視頻、軟件、應用分發(fā)。360電視助手具有例如以下一些特點:
1、??在同一個局域網(wǎng)環(huán)境下。能夠通過手機端直接安裝TV端到電視上,而不須要復制到SD卡或者U盤上。
2、??在TV端安裝后會作為Server與手機端進行局域網(wǎng)通信,手機端能夠控制TV端進行應用安裝、視頻播放、甚至玩游戲等。
3、??TV端集成暫時root能力。在通過手機端操作“安裝到電視”時,電視上會靜默安裝好該應用。
4、??提供遙控器功能。能夠通過手機遙控電視。
2.???技術實現(xiàn)分析
本文主要對360電視助手中的兩個核心技術點進行分析研究:
A.????????怎樣通過局域網(wǎng)(Wifi)環(huán)境。直接安裝應用到電視端。
B.????????在電視上安裝電視助手(TV端)后。手機端怎樣與TV端進行局域網(wǎng)內(nèi)通信。
2.1.??局域網(wǎng)應用安裝
局域網(wǎng)內(nèi)直接安裝apk到TV端是通過我們?nèi)f能的adb實現(xiàn)的。
關于adb的使用方法這里就不詳細介紹了,不熟悉的讀者能夠自行查閱Android官方文檔,或者在cmd環(huán)境中運行“adb”命令查看。這里僅僅介紹電視助手的原理。
電視助手的實現(xiàn)原理例如以下:
1.?????????首先確保電視端中“設置?->開發(fā)人員選項->開啟開發(fā)人員選項”處于開啟狀態(tài),這個在非常多電視中默認是開啟的。而且在沒有開啟的電視中,360會引導用戶開啟。
?
2.?????????在手機端通過“ping”命令掃描探測局域網(wǎng)內(nèi)可用的ip,以下是反編譯之后的代碼:
關于“ping”命令的使用方法例如以下:
?
3.?????????通過“cat /system/build.prop | grep \"product\"”命令獲取TV端的產(chǎn)品名稱,反編譯代碼例如以下:
?
4.?????????在獲得到TV端的名稱后。會提示是否要連接到TV端。
此時,通過“adb connect <host>[:<port>]”命令連接電視,以下是反編譯后的代碼:
?
5.?????????在連接到TV端,通過下“cat/system/build.prop”命令獲取TV端的相關信息,以下是反編譯后的代碼:
?
6.?????????在連接到TV端后,就能夠通過“adb install –r ”命令進行局域網(wǎng)內(nèi)遠程安裝了,反編譯代碼例如以下:
?
在運行“adb install”命令后,依據(jù)運行結(jié)果中是否包括“Success”推斷是否成功安裝,再不是“Success”的情況會返回詳細的錯誤原因。能夠進行解析。
?
7.?????????在運行結(jié)束。斷開連接時,能夠運行“adb disconnect”命令,反編譯代碼例如以下:
?
8.?????????在TV端安裝后,手機端能夠通過”am start“命令喚起TV端,反編譯代碼例如以下:
?
好了,到這里360電視助手client是怎樣在wifi環(huán)境下,直接安裝到電視端的就都明確了。
2.2.??搭建局域網(wǎng)C/S通信
在電視中安裝了TV端以后,TV端會作為一個Server與手機端(Client)形成一個C/S結(jié)構(gòu),接下來的事情就是Client與Server直接的網(wǎng)絡通信了。
這里之所以採用C/S結(jié)構(gòu)進行通信,個人認為原因有兩點:
A.????????adb connect建立的連接不穩(wěn)定。隨時可能會斷開,并且也無法感知連接是否可用等連接狀態(tài)。
B.????????有些操作通過adb是完畢不了的,必須通過C/S的方式,將”指令“發(fā)生到Server端(電視),在Server端運行完畢后,再將結(jié)果返回到手機。舉個簡單的樣例,比方說我想要獲取電視上已安裝應用列表等。
360電視助手中,C/S接口。用的是12333port,也就是說TV端會以socket監(jiān)聽12333port。這從手機端反編譯的代碼也能夠看出:
?
在手機端將命令以http請求的方式發(fā)送到TV端。手機端與TV端的數(shù)據(jù)以jeson的形式進行傳輸,以下是反編譯代碼:
?
好了,到這里360電視助手是怎樣局域網(wǎng)下進行通信的,就清楚了。
在360電視助手中。除了上面介紹的局域網(wǎng)通信方式外,也有利用普通無線網(wǎng)絡進行push的方式。先將手機端的操作指令發(fā)送的360的server,再從serverpush到目標端進行響應。這些不是本文想要分析的重點,不再分析。
總結(jié)
以上是生活随笔為你收集整理的adb的那点小事——360电视助手实现研究的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最详细的Spring+SpringMVC
- 下一篇: VUE使用百度地图插件