我试图更好地理解相机本机代码的底层逻辑,但在寻找方法定义Camera::connect()
和其他从Camera.h
.
我遵循的步骤如下:
- 在我所在
Camera.java
的主分支中,其中包含解析摄像机的逻辑,CameraInfo.CAMERA_FACING_BACK
在遇到时选择:Camera.open()
调用Camera.getCameraInfo(int, CameraInfo)
中的每个 intCamera.getNumberOfCameras()
。Camera.getCameraInfo(int, CameraInfo)
依次调用本机函数Camera._getCameraInfo(int, CameraInfo)
。
深入研究 JNI:
android_hardware_Camera_getCameraInfo(JNIEnv*, jobject, jint, jobject)
然后调用静态方法Camera::getCameraInfo(jint, CameraInfo*)
,该方法似乎是通过以下方式声明的:#include <camera/Camera.h>
浏览和搜索 master 分支似乎对
camera/Camera.h
. 我能找到的唯一结果是在旧标签中,例如在姜饼分支中。这里只有一个方法声明:static status_t getCameraInfo(int cameraId, struct CameraInfo* cameraInfo);
但是,方法主体似乎没有在任何地方定义。
最后两个步骤是我感到困惑的地方。camera/Camera.h
较新版本的 Android 定义在哪里?最后,Camera
实际定义的方法体在哪里?