Camera: Add enableShutterSound method.
Some camera apps may wish to replace the system camera shutter sound
with their own, especially if they are taking rapid bursts of
images. Add method to allow this when possible.
Hidden for now.
Change-Id: I6520f5441d28675626fafab48c6609c589fc6f7e
diff --git a/core/java/android/hardware/Camera.java b/core/java/android/hardware/Camera.java
index 829620b..652356c 100644
--- a/core/java/android/hardware/Camera.java
+++ b/core/java/android/hardware/Camera.java
@@ -1146,6 +1146,31 @@
public native final void setDisplayOrientation(int degrees);
/**
+ * Enable or disable the default shutter sound when taking a picture.
+ *
+ * By default, the camera plays the system-defined camera shutter sound when
+ * {@link #takePicture} is called. Using this method, the shutter sound can
+ * be disabled. It is strongly recommended that an alternative shutter sound
+ * is played in the {@link ShutterCallback} when the system shutter sound is
+ * disabled.
+ *
+ * Note that devices may not always allow control of the camera shutter
+ * sound. If the shutter sound cannot be controlled, this method will return
+ * false.
+ *
+ * @param enabled whether the camera should play the system shutter sound
+ * when {@link #takePicture takePicture} is called.
+ * @return true if the shutter sound state was successfully changed. False
+ * if the shutter sound cannot be controlled; in this case, the
+ * application should not play its own shutter sound since the
+ * system shutter sound will play when a picture is taken.
+ * @see #takePicture
+ * @see ShutterCallback
+ * @hide
+ */
+ public native final boolean enableShutterSound(boolean enabled);
+
+ /**
* Callback interface for zoom changes during a smooth zoom operation.
*
* @see #setZoomChangeListener(OnZoomChangeListener)
diff --git a/core/jni/android_hardware_Camera.cpp b/core/jni/android_hardware_Camera.cpp
index 6cd8955..e1e97a1 100644
--- a/core/jni/android_hardware_Camera.cpp
+++ b/core/jni/android_hardware_Camera.cpp
@@ -781,6 +781,25 @@
}
}
+static jboolean android_hardware_Camera_enableShutterSound(JNIEnv *env, jobject thiz,
+ jboolean enabled)
+{
+ ALOGV("enableShutterSound");
+ sp<Camera> camera = get_native_camera(env, thiz, NULL);
+ if (camera == 0) return JNI_FALSE;
+
+ int32_t value = (enabled == JNI_TRUE) ? 1 : 0;
+ status_t rc = camera->sendCommand(CAMERA_CMD_ENABLE_SHUTTER_SOUND, value, 0);
+ if (rc == NO_ERROR) {
+ return JNI_TRUE;
+ } else if (rc == PERMISSION_DENIED) {
+ return JNI_FALSE;
+ } else {
+ jniThrowRuntimeException(env, "enable shutter sound failed");
+ return JNI_FALSE;
+ }
+}
+
static void android_hardware_Camera_startFaceDetection(JNIEnv *env, jobject thiz,
jint type)
{
@@ -890,6 +909,9 @@
{ "setDisplayOrientation",
"(I)V",
(void *)android_hardware_Camera_setDisplayOrientation },
+ { "enableShutterSound",
+ "(Z)Z",
+ (void *)android_hardware_Camera_enableShutterSound },
{ "_startFaceDetection",
"(I)V",
(void *)android_hardware_Camera_startFaceDetection },