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