- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- 8. Multimedia.pptx
- 7AUnit 4 comic strips and welcome(公开课).ppt
- 8-2006-Friction and wear behavior of dental feldspathic porcelain.pdf
- 74AUP1G57L6X,74AUP1G57FHX, 规格书,Datasheet 资料.pdf
- 831 Notice to Readers Human Ingestion of Bacillus Anthracis-Contaminated Meat —.pdf
- 829no1-22a-lcs.pdf
- 8-kidneys and regulations of water and inorganic iron.ppt
- 7BUnit1 reading PPT.ppt
- 9 688-692 转749 基础研究 5+20 超高压处理对添加变性淀粉鸡肉糜制品品质的影响.pdf
- 910Cold Induction of Arabidopsis CBF Genes Involves Multiple ICE (Inducer of CBF Expression).pdf
文档评论(0)