diff options
author | Chih-Chung Chang <chihchung@google.com> | 2010-06-10 13:32:16 +0800 |
---|---|---|
committer | Chih-Chung Chang <chihchung@google.com> | 2010-06-11 16:47:33 +0800 |
commit | b8bb78f54b48868465a9d69d65fda08524ab5ae1 (patch) | |
tree | fadbdd8dd989ce2b3b29cd780fabc91d7f98dd09 /core/jni/android_hardware_Camera.cpp | |
parent | 2fd73a452268d2acb6e72a1d23a422085ed3c510 (diff) | |
download | frameworks_base-b8bb78f54b48868465a9d69d65fda08524ab5ae1.zip frameworks_base-b8bb78f54b48868465a9d69d65fda08524ab5ae1.tar.gz frameworks_base-b8bb78f54b48868465a9d69d65fda08524ab5ae1.tar.bz2 |
Change camera interface to support multiple cameras.
Change-Id: Ie88fe706d2278acf762eca87780de349434778a4
Diffstat (limited to 'core/jni/android_hardware_Camera.cpp')
-rw-r--r-- | core/jni/android_hardware_Camera.cpp | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/core/jni/android_hardware_Camera.cpp b/core/jni/android_hardware_Camera.cpp index c363156..c784974 100644 --- a/core/jni/android_hardware_Camera.cpp +++ b/core/jni/android_hardware_Camera.cpp @@ -34,6 +34,8 @@ using namespace android; struct fields_t { jfieldID context; jfieldID surface; + jfieldID facing; + jfieldID orientation; jmethodID post_event; }; @@ -293,6 +295,20 @@ static jint android_hardware_Camera_getNumberOfCameras(JNIEnv *env, jobject thiz return Camera::getNumberOfCameras(); } +static void android_hardware_Camera_getCameraInfo(JNIEnv *env, jobject thiz, + jint cameraId, jobject info_obj) +{ + CameraInfo cameraInfo; + status_t rc = Camera::getCameraInfo(cameraId, &cameraInfo); + if (rc != NO_ERROR) { + jniThrowException(env, "java/lang/RuntimeException", + "Fail to get camera info"); + return; + } + env->SetIntField(info_obj, fields.facing, cameraInfo.facing); + env->SetIntField(info_obj, fields.orientation, cameraInfo.orientation); +} + // connect to camera service static void android_hardware_Camera_native_setup(JNIEnv *env, jobject thiz, jobject weak_this, jint cameraId) @@ -575,6 +591,9 @@ static JNINativeMethod camMethods[] = { { "getNumberOfCameras", "()I", (void *)android_hardware_Camera_getNumberOfCameras }, + { "getCameraInfo", + "(ILandroid/hardware/Camera$CameraInfo;)V", + (void*)android_hardware_Camera_getCameraInfo }, { "native_setup", "(Ljava/lang/Object;I)V", (void*)android_hardware_Camera_native_setup }, @@ -668,7 +687,9 @@ int register_android_hardware_Camera(JNIEnv *env) { field fields_to_find[] = { { "android/hardware/Camera", "mNativeContext", "I", &fields.context }, - { "android/view/Surface", ANDROID_VIEW_SURFACE_JNI_ID, "I", &fields.surface } + { "android/view/Surface", ANDROID_VIEW_SURFACE_JNI_ID, "I", &fields.surface }, + { "android/hardware/Camera$CameraInfo", "mFacing", "I", &fields.facing }, + { "android/hardware/Camera$CameraInfo", "mOrientation", "I", &fields.orientation }, }; if (find_fields(env, fields_to_find, NELEM(fields_to_find)) < 0) |