- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
AndroidCamera系统结构简析及移植探析
AndroidCamera系统结构简析及移植探析摘要:目前对于各类Android系统设备,都要求具备照相拍摄功能。考虑到平台的多样性和设备型号的差异,需要开展相应的Camera系统的移植工作。在理解Android系统结构的基础上,分析了Camera在Android系统中各个层次结构上的实现方式,进而阐明了在进行Camera移植时所需完成的主要工作内容。
关键词:Android系统;Camera组件;系统移植
中图分类号:TP316 文献标识码:A 文章编号:1009-3044(2013)09-2100-02
1 概述
目前Android系统由于其系统的开放性、强大的多媒体能力、无需许可费用等等显著的特点,在各类移动设备与嵌入式设备中得到极为广泛的使用,得到业界各大开发团队,顶尖IT公司的广泛支持。具备照相和视频拍摄功能是这些移动设备、多媒体设备的一个基本要求,因此对原生Android系统,针对不同的开发平台、不同的厂商产品来进行有针对性的移植,是有着积极的实践意义的。
2 Android结构分析
目前在移动设备中广泛使用的Android系统,从逻辑结构上可以分为应用层、应用框架层、库层、内核层这个四个层次。
应用层的应用程序通常是指用户界面这个层面的程序,使用Android提供的API进行开发,通常用java程序编写,再加上各种资源文件。Java源程序和资源文件共同编译生成APK包。当然Android系统本身也提供了一些最基本的核心应用。
应用框架层为应用软件开发者提供上述提到的API,本质上,这是应用程序的框架。在这个框架内部,提供了UI界面所需要的各种控件,比如网格、列表等,为开发应用软件提供了必要的编程接口。另外在应用框架层中也需要按照统一的标准接入下一个层次库层中的内容。
库层对于嵌入式系统来说,占据一个中间件层次的位置,是Android应用层与实际硬件进行相互通信的一个接口,把硬件的行为和功能封装起来,然后应用框架层再通过某种通信途径与库层进行通信。具体说来,该层次包含两个部分,一个是各种库,另外一个是Android的运行环境(RunTime),这些库通常是用C++语言实现的,包含C标准库、多媒体框架、图形引擎、嵌入式数据库等等部分。
内核层又称之为操作系统层,使用标准的Linux2.6内核,是直接与硬件联系的一层。考虑到Android系统的主要应用范围,这个层次主要包含一些与移动设备相关设备驱动程序。
3 Camera各层次的实现方式剖析
在分析上述Android整体框架基础上,进一步分析Camera系统的具体实现方式。
3.1 应用层实现
Camera系统在应用层上是以一个APK包的直观形式表现出来的,当然在这个APK包的开发过程中调用了大量框架层中的API函数,能够实现Camera应用的业务逻辑和UI显示,路径在/android/packages/apps/Camera下,主要实现文件是Camera.java,对应的Java层次的类是android.hardware.Camera。这个类就是Android提供给上层调用的Camera类。这个类的具体作用是用来连接与断开下层中Camera服务,对拍摄的参数或者模式进行设置,打开关闭画面预览,开启拍照动作,实现自动对焦等。它也是Android Camera应用框架封装暴露出来的接口。不过需要注意的是如果要在一个实际的Android应用程序中使用Camera类,必须在源代码中声明Camera的权限与特性。
3.2 应用框架层实现
Camera框架层将应用与底层的实现隔离开来,实现了一套Android定义的对上对下接口规范,方便应用及底层硬件的开发和移植。这一层对上以Java类的形式包装出android.hardware.Camera,以便应用层软件进行调用;对下则在一个文件名为CameraHardwareInterface.h头文件中规定出Camera硬件抽象层的接口。注意这个接口类内定义了纯虚函数,虚函数必须被实现类继承以后才能使用。实际上这个实现类就是在上文所提到的Android框架里的库层,这个库层作用是继承CameraHardwareInterface接口,将处于最底层的硬件驱动加以实例化,生成libcamera.so让应用框架的libcameraservice.so进行调用。通过这种处理方式,使得让Camera的应用框架代码保持独立性,不会受到具体硬件型号和参数的影响,为在不同的平台上移植Android系统提供了极大的方便。
在这个层次中,代码经历了从Java到JNI再到C++的多次转换。Camera.java源文件中的类作为Android SDK中有关Ca
文档评论(0)