我試圖更好地理解相機的本機代碼的基礎邏輯,但是當尋找Camera::connect()
和Camera.h
中聲明的其他函數的方法定義時,我似乎遇到了死衚衕。相機的本機代碼的基礎邏輯
我遵循的步驟是這些:
- 在主分支I located
Camera.java
,其中包含了解決相機的邏輯,當遇到它選擇CameraInfo.CAMERA_FACING_BACK
:Camera.open()
電話Camera.getCameraInfo(int, CameraInfo)
每個INT在Camera.getNumberOfCameras()
。- 反過來
Camera.getCameraInfo(int, CameraInfo)
調用本機的功能Camera._getCameraInfo(int, CameraInfo)
。
鑽研into the JNI:
android_hardware_Camera_getCameraInfo(JNIEnv*, jobject, jint, jobject)
然後調用靜態方法Camera::getCameraInfo(jint, CameraInfo*)
,這似乎被宣佈通過:#include <camera/Camera.h>
瀏覽和搜索主分支沒有按似乎沒有給出的任何命中。我能找到的唯一結果是使用較舊的標籤,例如in the gingerbread branch。這裏只有一個方法聲明:
static status_t getCameraInfo(int cameraId, struct CameraInfo* cameraInfo);
但是,方法體似乎沒有在任何地方定義。
最後兩個步驟是我困惑的地方。 camera/Camera.h
在更新版本的Android中定義的位置在哪裏?最後,Camera
的方法體在哪裏實際定義?