Android-Camera代码结构
2017-03-29 15:36
357 查看
1、应用
Camera2 纯应用源码
2、framework层
Camera.java路径frameworks/base/core/java/android/hardware/Camera.java
它会调用相应的JNI类来访问native层的代码
3、JNI层—android_hardware_Camera.cpp
base/core/jni/android_hardware_Camera.cpp
JNI代码调用native层代码获得底层camera硬件的访问入口,通过该入口,可以获取到framework层用于创建android.hardware.Camera对象的相关数据。
4、Native framework—-Camera.cpp
Native framework层的定义位于frameworks/av/camera/Camera.cpp
这个类通过调用IPC binder代理来获取camera service的访问接口
5、Binder IPC proxies
IPC binder代理可以现实进程间通信。在frameworks/av/camera目录下有三个camera binder类的定义。ICameraService是cameraservice的接口,ICamera是被打开的camera设备的接口,ICameraClient是camera设备返回给application framework层的接口。
6、Camera service
Camera service层的定义位于frameworks/av/services/camera/libcameraservice/CameraService.cpp中。它是与camera HAL交互的实际代码。
7、HAL层
省略
以下是代码架构图:
8、内核驱动
9、补充说明:
HAL层定义了必须实现的接口,相关头文件如下:
(1)hardware/libhardware/include/hardware/camera.h
camera.h头文件中声明了一个结构体camera_device,它包含了结构体camera_device_ops,该结构体中有指向实现camera HAL接口的函数的函数指针。
(2)hardware/libhardware/include/hardware/camera_common.h
camera_common.h定义了一个重要的结构体camera_module,这个结构体定义了一个标准结构,可以获取camera基本信息,比如ID和所有camera所共有的属性,比如是否是前置或者后置camera。
(3)frameworks/av/include/camera/CameraParameters.h
设置的camera参数的各中类型
在camera HAL层,使用int (set_parameters)(struct camera_device , const char *parms)来设置这些参数。
Camera2 纯应用源码
2、framework层
Camera.java路径frameworks/base/core/java/android/hardware/Camera.java
它会调用相应的JNI类来访问native层的代码
3、JNI层—android_hardware_Camera.cpp
base/core/jni/android_hardware_Camera.cpp
JNI代码调用native层代码获得底层camera硬件的访问入口,通过该入口,可以获取到framework层用于创建android.hardware.Camera对象的相关数据。
4、Native framework—-Camera.cpp
Native framework层的定义位于frameworks/av/camera/Camera.cpp
这个类通过调用IPC binder代理来获取camera service的访问接口
5、Binder IPC proxies
IPC binder代理可以现实进程间通信。在frameworks/av/camera目录下有三个camera binder类的定义。ICameraService是cameraservice的接口,ICamera是被打开的camera设备的接口,ICameraClient是camera设备返回给application framework层的接口。
6、Camera service
Camera service层的定义位于frameworks/av/services/camera/libcameraservice/CameraService.cpp中。它是与camera HAL交互的实际代码。
7、HAL层
省略
以下是代码架构图:
8、内核驱动
9、补充说明:
HAL层定义了必须实现的接口,相关头文件如下:
(1)hardware/libhardware/include/hardware/camera.h
camera.h头文件中声明了一个结构体camera_device,它包含了结构体camera_device_ops,该结构体中有指向实现camera HAL接口的函数的函数指针。
(2)hardware/libhardware/include/hardware/camera_common.h
camera_common.h定义了一个重要的结构体camera_module,这个结构体定义了一个标准结构,可以获取camera基本信息,比如ID和所有camera所共有的属性,比如是否是前置或者后置camera。
(3)frameworks/av/include/camera/CameraParameters.h
设置的camera参数的各中类型
在camera HAL层,使用int (set_parameters)(struct camera_device , const char *parms)来设置这些参数。
相关文章推荐
- Android-Camera代码结构
- Android-Camera代码结构
- Android-Camera代码结构
- Android-Camera代码结构
- Android-Camera代码结构
- Android-Camera代码结构
- App工程结构搭建:几种常见Android代码架构分析
- App工程结构搭建:几种常见Android代码架构分析
- android Mms代码结构
- 安卓开发_Android编译完成后的代码结构
- android 应用之短信拦截代码结构
- 与Android camera相关代码
- App工程结构搭建:几种常见Android代码架构分析
- Android编译大全(三)--编译之后的代码结构及SDK制作
- App工程结构搭建:几种常见Android代码架构分析
- Android之高仿雅虎天气(二)---代码结构解析
- App工程结构搭建:几种常见Android代码架构分析
- android代码结构
- Android中Exif的操作以及Camera应用中相关代码优化方案
- android摄像头(camera)之 V4L2编程中用到的各种结构体