如何將Android帶入互聯(lián)網(wǎng)數(shù)字家庭? 第二篇
2011-08-07
作者:章立 ARM的家庭軟件架構(gòu)師
在上一篇中,我們探討了數(shù)字電視/機(jī)頂盒軟件架構(gòu)的現(xiàn)狀與未來(lái),分享了數(shù)字家庭軟件平臺(tái)未來(lái)的發(fā)展趨勢(shì)和特點(diǎn)(http://ihrv.cn/article/index.aspx?id=133757)。在本篇中,我們將一起來(lái)探討為什么Android能夠成為未來(lái)數(shù)字家庭軟件平臺(tái)的選擇之一;而我們又如何才能將原本為手持設(shè)備量身定做的Android移植到電視/機(jī)頂盒平臺(tái)?
1. 首先,我們需要回答的第一個(gè)問(wèn)題就是: Why Android?
為什么Android能夠成為未來(lái)數(shù)字家庭軟件平臺(tái)的有力競(jìng)爭(zhēng)者?
先來(lái)看看Android自身的天然的優(yōu)勢(shì):
-
Android 是一套完整的消費(fèi)電子設(shè)備的軟件解決方案,它包括:
- Linux 內(nèi)核;
- 完整的中間件,包括2D/3D圖形,多媒體框架,WebKit,Dalvik虛擬機(jī)等等;
- 健壯的可以重用的應(yīng)用程序框架以及便利實(shí)用SDK/NDK開(kāi)發(fā)工具。
-
Android是個(gè)開(kāi)源項(xiàng)目:
- 可以自由的定制和移植;(有碎片化的風(fēng)險(xiǎn),本文不做討論)
- Android基于Apache2.0 license,方便用于商業(yè)用途。
-
Android的生態(tài)系統(tǒng)已經(jīng)建立:
- Google Market上已經(jīng)有了超過(guò)20萬(wàn)的Android應(yīng)用
- 每天有超過(guò)40萬(wàn)個(gè)Android設(shè)備被激活
-
Android中集中了大量ARM架構(gòu)的優(yōu)化,在ARM上Android可以獲得倍增的性能和用戶體驗(yàn)。
除了這些優(yōu)勢(shì),Android移植到電視/機(jī)頂盒平臺(tái),劣勢(shì)也很明顯: - 沒(méi)有TV/STB相關(guān)的API,造成Android TV/STB的應(yīng)用程序框架的非標(biāo)準(zhǔn)化。
- Android不是為TV/STB設(shè)計(jì)的,需要做大量的定制,移植和優(yōu)化工作。
- Google完全控制Android,包括新的性能,架構(gòu)和應(yīng)用程序框架的變化,路線圖等等。 這對(duì)于定制和移植Android的廠商有一定的風(fēng)險(xiǎn)。
-
Google官方的GoogleTV 對(duì)于AndroidTV的影響:
開(kāi)發(fā)AndroidTV的合作伙伴需要謹(jǐn)慎的考慮GoogleTV對(duì)
AndroidTV的影響:- 如何兼容GoogleTV?
- GoogleTV開(kāi)源后,如何快速高效的merge到GoogleTV?
- 是否可以重用GoogleTV的生態(tài)系統(tǒng)?
這些都是需要考慮的問(wèn)題同時(shí)也是風(fēng)險(xiǎn)所在。由于成為GoogleTV Leading Partner有很高門檻,同時(shí)GoogleTV開(kāi)源的時(shí)間仍然很難確認(rèn),對(duì)于希望開(kāi)發(fā)Android TV/STB的合作伙伴,我們建議在軟件架構(gòu)設(shè)計(jì)和定制時(shí),考慮到未來(lái)兼容GoogleTV的可能性;因?yàn)橛泻芏喽ㄖ坪鸵浦补ぷ鳎幢阍贕oogleTV開(kāi)源后,仍然是需要的。
圖一描述了Google已經(jīng)發(fā)布的針對(duì)的不同的目標(biāo)設(shè)備的Android版本。
圖一 Google發(fā)布的針對(duì)不同設(shè)備的Android版本
從圖一我們可以看出GoogleTV是以Android為基礎(chǔ)的一個(gè)分支;根據(jù)Google最新的路線圖,未來(lái)的Android主線會(huì)演化成適用于手機(jī),平板和電視三類設(shè)備。
2. 那么, 如何才能將Android移植到電視或機(jī)頂盒平臺(tái)呢?要說(shuō)清楚這個(gè)問(wèn)題, 首先我們必須明確將Android移植到電視或機(jī)頂盒平臺(tái)上需要面對(duì)哪些挑戰(zhàn)?
-
挑戰(zhàn)1 :電視用戶對(duì)于用戶界面,圖形的性能以及用戶交互模式有完全不同于手機(jī)用戶的體驗(yàn)。這包括:
- TV的分辨率要求至少720p/1080p以及大于30fps的幀率;
- TV的OSD要求32位的色彩深度;而android默認(rèn)的是16bit;
- TV的用戶界面,包括界面上內(nèi)容的組織方式不同于手機(jī);
- TV用戶使用遙控器而不是觸摸屏;
- TV因?yàn)槭谴笃猎O(shè)備,對(duì)2D/3D圖形的性能有更高的要求,需要硬件加速。
-
挑戰(zhàn) 2 : 適合于大屏的豐富的多媒體影音體驗(yàn):
- 更加優(yōu)化的多媒體框架;
- 支持更多的音視頻文件格式和容器;
- 支持更多的音視頻編解碼標(biāo)準(zhǔn);
-
挑戰(zhàn) 3 : 集成DTV/STB功能:集成數(shù)字電視協(xié)議棧,
- 比如DVB-T,DVB-C, ATSC等;
- 針對(duì)數(shù)字電視功能擴(kuò)展API接口;
- 挑戰(zhàn) 4 : 推動(dòng)應(yīng)用開(kāi)發(fā)者開(kāi)發(fā)適合于TV的Android應(yīng)用;
-
挑戰(zhàn) 5 : 內(nèi)容保護(hù)
- 如何部署CA?
- 如何部署DRM?
接下來(lái)我們將來(lái)討論如何應(yīng)對(duì)這五大挑戰(zhàn)。由于篇幅關(guān)系,本篇將重點(diǎn)討論挑戰(zhàn)1。 在第三篇和第四篇中,我們會(huì)依次對(duì)其他挑戰(zhàn)展開(kāi)討論。
首先我們將挑戰(zhàn)1中面臨的問(wèn)題分為兩類:
第一類:圖形圖像顯示相關(guān)的問(wèn)題:
-
- TV的分辨率要求至少720p/1080p以及大于30fps的幀率;
- TV的OSD要求32位的色彩深度;而android默認(rèn)的是16bit;
- TV因?yàn)槭谴笃猎O(shè)備,對(duì)2D/3D圖形的性能有更高的要求,需要硬件加速
針對(duì)上述問(wèn)題,需要至少對(duì)下列模塊進(jìn)行修改或集成,如圖二所示:
圖二 應(yīng)對(duì)挑戰(zhàn)1的第一類問(wèn)題需要涉及的模塊
第二類: 用戶交互模式相關(guān)的問(wèn)題:
-
- TV的用戶界面,包括界面上內(nèi)容的組織方式不同于手機(jī);
- TV用戶使用遙控器而不是觸摸屏;
針對(duì)這類問(wèn)題,需要對(duì)Android中的下列模塊進(jìn)行修改,具體請(qǐng)參見(jiàn)圖三:
圖三 應(yīng)對(duì)挑戰(zhàn)1的第二類問(wèn)題需要涉及的模塊
3. 2D和3D圖形的性能是Android TV整體性能的關(guān)鍵點(diǎn);在Android中,我們可以通過(guò)優(yōu)化Skia和SurfaceFlinger來(lái)加速2D性能。
-
如何優(yōu)化Skia來(lái)加速Full HD的2D體驗(yàn)?
- 重用Skia中大量的Neon優(yōu)化;或者用Neon進(jìn)行進(jìn)一步優(yōu)化;
- 利用GPU(OpenGL ES/OpenVG/…)來(lái)做Skia的后端在
- Image Decoder中嵌入硬件decoder。
圖四說(shuō)明了上述優(yōu)化可能發(fā)生在Skia架構(gòu)中的哪些模塊?
圖四 Skia優(yōu)化可能涉及的模塊
-
如何通過(guò)優(yōu)化SurfaceFlinger加速2D?
- 在Android1.6(Donut)之前(包含Donut)的版本,需要實(shí)現(xiàn)“copybit”的HAL來(lái)實(shí)現(xiàn)2D硬件加速。
- Android1.6以后的版本,將“Copybit”封裝進(jìn)了OpenGL ES;通過(guò)硬件實(shí)現(xiàn)的OpenGL ES 2D API來(lái)實(shí)現(xiàn)硬件加速。
-
Android3.0(Honeycomb)在2D上增加了新的功能,包括:
- 通過(guò)在AndroidManifest.xml中設(shè)置
-
- 應(yīng)用開(kāi)發(fā)者可以控制硬件加速的作用域,是全局的還是某個(gè)Activity或者某個(gè)View
- 通過(guò)運(yùn)用GPU可以帶來(lái)更加流暢的用戶體驗(yàn)
在下篇中, 我們將繼續(xù)探討如何將Android移植到電視/機(jī)頂盒平臺(tái); 同時(shí)也會(huì)重點(diǎn)介紹GoogleTV以及GoogleTV與AndroidTV之間的對(duì)比。