如何將Android帶入互連網數字家庭? 第二篇 轉載

來源:互聯網
上載者:User

在上一篇中,我們探討了數字電視/機頂盒軟體架構的現狀與未來,分享了數字家庭軟體平台未來的發展趨勢和特點(http://bit.ly/jCvlNs)。在本篇中,我們將一起來探討為什麼Android能夠成為未來數字家庭軟體平台的選擇之一;而我們又如何才能將原本為手持功能量身定做的Android移植到電視/機頂盒平台?

1. 首先,我們需要回答的第一個問題就是: Why Android?
為什麼Android能夠成為未來數字家庭軟體平台的有力競爭者?
先來看看Android自身的天然的優勢:

  • Android 是一套完整的消費電子裝置的軟體解決方案,它包括:

    • Linux 核心;
    • 完整的中介軟體,包括2D/3D圖形,多媒體架構,WebKit,Dalvik虛擬機器等等;
    • 健壯的可以重用的應用程式架構以及便利實用SDK/NDK開發工具。
  • Android是個開源項目:

    • 可以自由的定製和移植;(有片段化的風險,本文不做討論)
    • Android基於Apache2.0 license,方便用於商業用途。
  • Android的生態系統已經建立:
    • Google Market上已經有了超過20萬的Android應用
    • 每天有超過40萬個Android裝置被啟用
  • Android中集中了大量ARM架構的最佳化,在ARM上Android可以獲得倍增的效能和使用者體驗。
    除了這些優勢,Android移植到電視/機頂盒平台,劣勢也很明顯:
  • 沒有TV/STB相關的API,造成Android TV/STB的應用程式架構的非標準化。
  • Android不是為TV/STB設計的,需要做大量的定製,移植和最佳化工作。
  • Google完全控制Android,包括新的效能,架構和應用程式架構的變化,路線圖等等。 這對於定製和移植Android的廠商有一定的風險。
  • Google官方的GoogleTV 對於AndroidTV的影響:
    開發AndroidTV的夥伴需要謹慎的考慮GoogleTV對
    AndroidTV的影響:
    • 如何相容GoogleTV?
    • GoogleTV開源後,如何快速高效的merge到GoogleTV?
    • 是否可以重用GoogleTV的生態系統?

這些都是需要考慮的問題同時也是風險所在。由於成為GoogleTV Leading Partner有很高門檻,同時GoogleTV開源的時間仍然很難確認,對於希望開發Android TV/STB的夥伴,我們建議在軟體架構設計和定製時,考慮到未來相容GoogleTV的可能性;因為有很多定製和移植工作,即便在GoogleTV開源後,仍然是需要的。

圖一描述了Google已經發布的針對的不同的目標裝置的Android版本。

圖一 Google發布的針對不同裝置的Android版本

從圖一我們可以看出GoogleTV是以Android為基礎的一個分支;根據Google最新的路線圖,未來的Android主線會演化成適用於手機,平板和電視三類裝置。

2. 那麼, 如何才能將Android移植到電視或機頂盒平台呢?要說清楚這個問題, 首先我們必須明確將Android移植到電視或機頂盒平台上需要面對哪些挑戰?

  • 挑戰1 :電視使用者對於使用者介面,圖形的效能以及使用者互動模式有完全不同於手機使用者的體驗。這包括:

    • TV的解析度要求至少720p/1080p以及大於30fps的幀率;
    • TV的OSD要求32位的色彩深度;而android預設的是16bit;
    • TV的使用者介面,包括介面上內容的組織方式不同於手機;
    • TV使用者使用遙控器而不是觸控螢幕;
    • TV因為是大屏裝置,對2D/3D圖形的效能有更高的要求,需要硬體加速。
  • 挑戰2 : 適合於大屏的豐富的多媒體影音體驗:
    • 更加最佳化的多媒體架構;
    • 支援更多的音視頻檔案格式和容器;
    • 支援更多的音視頻編解碼標準;
  • 挑戰3 : 整合DTV/STB功能:整合數字電視協議棧,
    • 比如DVB-T,DVB-C, ATSC等;
    • 針對數字電視功能擴充API介面;
  • 挑戰 4 : 推動應用開發人員開發適合於TV的Android應用;
  • 挑戰5 : 內容保護
    • 如何部署CA?
    • 如何部署DRM?

接下來我們將來討論如何應對這五大挑戰。由於篇幅關係,本篇將重點討論挑戰1。 在第三篇和第四篇中,我們會依次對其他挑戰展開討論。

首先我們將挑戰1中面臨的問題分為兩類:

第一類:圖形映像顯示相關的問題:

    • TV的解析度要求至少720p/1080p以及大於30fps的幀率;
    • TV的OSD要求32位的色彩深度;而android預設的是16bit;
    • TV因為是大屏裝置,對2D/3D圖形的效能有更高的要求,需要硬體加速

針對上述問題,需要至少對下列模組進行修改或整合,二所示:

圖二 應對挑戰1的第一類問題需要涉及的模組

第二類: 使用者互動模式相關的問題:

    • TV的使用者介面,包括介面上內容的組織方式不同於手機;
    • TV使用者使用遙控器而不是觸控螢幕;

針對這類問題,需要對Android中的下列模組進行修改,具體請參見圖三:

圖三 應對挑戰1的第二類問題需要涉及的模組

3. 2D和3D圖形的效能是Android TV整體效能的關鍵點;在Android中,我們可以通過最佳化Skia和SurfaceFlinger來加速2D效能。

  • 如何最佳化Skia來加速Full HD的2D體驗?

    • 重用Skia中大量的Neon最佳化;或者用Neon進行進一步最佳化;
    • 利用GPU(OpenGL ES/OpenVG/…)來做Skia的後端在
    • Image Decoder中嵌入硬體decoder。

圖四說明了上述最佳化可能發生在Skia架構中的哪些模組?

圖四 Skia最佳化可能涉及的模組

  • 如何通過最佳化SurfaceFlinger加速2D?

    • 在Android1.6(Donut)之前(包含Donut)的版本,需要實現“copybit”的HAL來實現2D硬體加速。
    • Android1.6以後的版本,將“Copybit”封裝進了OpenGL ES;通過硬體實現的OpenGL ES 2D API來實現硬體加速。
  • Android3.0(Honeycomb)在2D上增加了新的功能,包括:
    • 通過在AndroidManifest.xml中設定
<android:hardwareAccelerated=“true”>來啟動硬體加速2D;
    • 應用開發人員可以控制硬體加速的範圍,是全域的還是某個Activity或者某個View
    • 通過運用GPU可以帶來更加流暢的使用者體驗

在下篇中, 我們將繼續探討如何將Android移植到電視/機頂盒平台; 同時也會重點介紹GoogleTV以及GoogleTV與AndroidTV之間的對比。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.