Android Camera open 从上到下代码流程

Posted 峥嵘life

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android Camera open 从上到下代码流程相关的知识,希望对你有一定的参考价值。

android Camera open 从上到下代码流程

top

Java层

1、Camera.java
----open();//入口1,默认指定CameraId为0,后置摄像头
----open(int cameraId);//入口2,未指定CameraId,可为0,1,2...
------------Camera(int cameraId)
----------------cameraInitNormal(int cameraId)
--------------------cameraInitVersion(int cameraId, int halVersion)

Jni层

2、android_hardware_Camera.cpp
----android_hardware_Camera_native_setup

C++层

3、Camera.cpp
----Camera::connect(int cameraId,...)

4、CameraBase.cpp
----CameraBase<TCam, TCamTraits>::connect(int cameraId,...)

底层服务

5、CameraService.cpp
----CameraService::connect(const sp<ICameraClient>& cameraClient, int cameraId,...)
--------CameraService::connectHelper(..,int cameraId,...)
------------CameraService::makeClient(...,int cameraId,...)

6、CameraClient.cpp
----CameraClient::initialize(sp<CameraProviderManager> manager)

Hal层

7、CameraHardwareInterface.cpp
----CameraHardwareInterface::initialize(sp<CameraProviderManager> manager)

8、CameraProviderManager.cpp
----CameraProviderManager::openSession(const std::string &id,...)

设备层

9、CameraDevice.cpp
----CameraDevice::open(const sp<ICameraDeviceCallback>& callback)

这里往下,不同系统会有较大差异。
10、CameraModule.cpp
----CameraModule::open(const char* id, struct hw_device_t** device)

11、CameraHal_Module.cpp
----int camera_device_open(const hw_module_t* module, const char* name, hw_device_t** device)

12、CameraHardware.cpp
----CameraHardware::CameraHardware()

13、V4L2Camera.cpp
----int V4L2Camera::Open (const char *device)
这里device字符串打印出来就是/dev/videoX(0、1、2)

Camera是不存在CameraService.java的,主要逻辑和实现都是在C++,所有问题分析或者新增功能都是C++代码分析为主。

共勉:再长的路也是要一步步走下去的。

以上是关于Android Camera open 从上到下代码流程的主要内容,如果未能解决你的问题,请参考以下文章

Android 从上到下写一个例子

Android 从上到下写一个例子 驱动加载

Android 从上到下写一个例子 本地服务

Android 从上到下写一个例子 HAL

使活动从上到下动画

Android 10 Camera学习笔记:Camera Framework架构