android_camera介绍.pdf

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
android_camera介绍

Android Camera框架介绍 一 ,总体介绍 Android Camera框架从整体上看是一个 client/service的架构, 有两个进程:一个是 client 进程, 可以看成是AP端,主要包括 JAVA 代码与一些 native c/c++代码. 另一个是 service 进 程,属于服务端,是 native c/c++代码, 主要负责和 linux kernel中的 camera driver交互, 搜 集 linux kernel中 camera driver传上来的数据,并交给显示系统(surface)显示. client进程 与 service 进程通过Binder IPC机制通信, client端通过调用 service端的接口实现各个具 体的功能.需要注意的是真正的 preview 数据不会通过Binder IPC机制从 service端复制到 client端,但会通过回调函数与内存映射的机制将 preview 数据 buffer的地址传到 client端, 最终可在 JAVA AP中操作处理这个 preview数据. 二 ,client端的具体内容 1, 应用层的 JAVA AP,这个就是Camera Ap开发者主要实现的地方. 从AP的角度看就是调 用 FrameWork层的 android.hardware.camera类来实现具体的功能. JAVA Ap最终被打包 成APK. Android 自带的 camera Ap在 packages/apps/Camera目录下. 2, FrameWork层主要提供了 android.hardware.camera 类给应用层使用, 这个类也是 JAVA 代码实现. android.hardware.camera 类通过 JNI调用 native 代码实现具体的功能. android.hardware.camera 类中提供了如下的一个参数类给应用层使用: public class Parameters { // Parameter keys to communicate with the camera driver. private static final String KEY_PREVIEW_SIZE = preview-size; private static final String KEY_PREVIEW_FORMAT = preview-format; 省略 code } 参数会以字典(map)的方式组织存储起来, 关键字就是 Parameters类中的这些静态字符串. ”这些参数最终会以形如 preview-size=640X480;preview-format=yuv422sp;......”格式的 字符串传到 service端. 文件位置:framework/base/core/java/android/hardware/camera.java. 提供的接口示例: // 获得一个 android.hardware.camera 类的实例 public static Camera open() { return new Camera(); } //接口直接调用 native 代码(android_hardware_camera.cpp中的代码) public native final void startPreview(); public native final void stopPreview(); 3, android.hardware.camera 类的 JNI调用实现在 android_hardware_camera.cpp文件中, 文件位置:framework/base/core/jni/android_hardware_camera.cpp. framework/base/core/jni/ 文件夹下的文件都被编译进 libandroid_runtime.so 公共库中. android_hardware_camera.cpp文件中的 JNI调用实现函数都如下图: android_hardware_camera.cpp文件中的 register_android_hardware_Camera(JNIEnv *env)函数会将上面的 native函数注册到虚拟机中,以供 FrameWork层的 JAVA 代码调用. 这些 native函数通过调用 libcamera_client.so中的Camera类实现具体的功能. 4, 核心的 libcamera_client.so动态库 库文件位置:frameworks/base/libs/came

文档评论(0)

l215322 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档