From b12e4e1586262ebea9c9d9fb79d8ecb4315b3aad Mon Sep 17 00:00:00 2001 From: Steve Kondik Date: Sat, 4 May 2013 03:07:51 -0700 Subject: [PATCH] camera: Add support for sending raw commands * Certain camera drivers need magic commands to select special modes such as ZSL or HDR. Add support for sending raw commands from applications. Change-Id: I512a765c7a67ffd2877e465cf6493ffc2b3b54ac --- core/java/android/hardware/Camera.java | 6 ++++++ core/jni/android_hardware_Camera.cpp | 14 ++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/core/java/android/hardware/Camera.java b/core/java/android/hardware/Camera.java index 6f4ad9813b69..0e217b9cd453 100644 --- a/core/java/android/hardware/Camera.java +++ b/core/java/android/hardware/Camera.java @@ -996,6 +996,12 @@ public void setAutoFocusMoveCallback(AutoFocusMoveCallback cb) { private native void enableFocusMoveCallback(int enable); + /** + * Send a raw command to the camera driver + * @hide + */ + public native void sendRawCommand(int arg1, int arg2, int arg3); + /** * Callback interface used to signal the moment of actual image capture. * diff --git a/core/jni/android_hardware_Camera.cpp b/core/jni/android_hardware_Camera.cpp index d8fc55efc143..e420a2b31b14 100644 --- a/core/jni/android_hardware_Camera.cpp +++ b/core/jni/android_hardware_Camera.cpp @@ -852,6 +852,17 @@ static void android_hardware_Camera_enableFocusMoveCallback(JNIEnv *env, jobject #endif } +static void android_hardware_Camera_sendRawCommand(JNIEnv *env, jobject thiz, jint arg1, jint arg2, jint arg3) +{ + ALOGV("sendRawCommand %d, %d, %d", arg1, arg2, arg3); + sp camera = get_native_camera(env, thiz, NULL); + if (camera == 0) return; + + if (camera->sendCommand(arg1, arg2, arg3) != NO_ERROR) { + jniThrowRuntimeException(env, "send raw command failed"); + } +} + //------------------------------------------------- static JNINativeMethod camMethods[] = { @@ -933,6 +944,9 @@ static JNINativeMethod camMethods[] = { { "enableFocusMoveCallback", "(I)V", (void *)android_hardware_Camera_enableFocusMoveCallback}, + { "sendRawCommand", + "(III)V", + (void *)android_hardware_Camera_sendRawCommand}, }; struct field {