如何将Android带入互联网数字家庭? 第二篇 转载
2011-08-02 08:51
381 查看
在上一篇中,我们探讨了数字电视/机顶盒软件架构的现状与未来,分享了数字家庭软件平台未来的发展趋势和特点(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之间的对比。
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之间的对比。
相关文章推荐
- 如何将Android带入互联网数字家庭? 第一篇转载
- 如何将Android带入互联网数字家庭? 第三篇 转载
- 如何将Android带入互联网数字家庭? 第四篇 转载
- 如何将Android带入互联网数字家庭(1)
- 如何将Android带入互联网数字家庭(2)
- 如何将Android带入互联网数字家庭? 第一篇
- 如何将Android带入互联网数字家庭(3)
- 如何将Android带入互联网数字家庭(4)
- 如何将Android带入互联网数字家庭? 第三篇
- 如何将Android带入互联网数字家庭? 第四篇
- 连载一:如何将如何将Android带入互联网数字家庭?
- 连载二:如何将 Android带入互联网数字家庭?
- 如何将Android带入互联网数字家庭?
- 如何将 Android带入互联网数字家庭? 第三篇
- 如何将 Android带入互联网数字家庭? 系列文章第四篇
- 【Android 基础】如何查看数字签名信息
- android如何保留小数点后x位数字
- 【转载】Eclipse:Android开发中如何查看System.out.println的输出内容
- 转载: Android 如何在Eclipse中查看Android API源码以及support包源码
- 17、android设备如何防止屏幕休眠(转载)