Camera::connect()カメラのネイティブ コードの根底にあるロジックをよりよく理解しようとしていますが、および から宣言されたその他の関数のメソッド定義を探すときに行き詰まりを迎えているようCamera.hです。
私が従った手順は次のとおりです。
- 私
Camera.javaが見つけた master ブランチには、カメラを解決するためのロジックが含まれており、CameraInfo.CAMERA_FACING_BACK遭遇したときに選択します。Camera.open()Camera.getCameraInfo(int, CameraInfo)の各 int を呼び出しますCamera.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。私が見つけた唯一の結果は、たとえば、gingerbread ブランチなどの古いタグにありました。ここにはメソッド宣言のみがあります:static status_t getCameraInfo(int cameraId, struct CameraInfo* cameraInfo);ただし、メソッド本体はどこにも定義されていないようです。
最後の 2 つのステップは、私が混乱している場所です。camera/Camera.h最近のバージョンの Android では、どこで定義されていますか? そして最後に、Camera実際に定義された のメソッド本体はどこにあるのでしょうか?