我试图更好地理解相机本机代码的底层逻辑,但在寻找方法定义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实际定义的方法体在哪里?