diff options
author | Eino-Ville Talvala <etalvala@google.com> | 2012-10-08 18:16:35 -0700 |
---|---|---|
committer | Eino-Ville Talvala <etalvala@google.com> | 2012-10-08 23:53:48 -0700 |
commit | 4f8e5ce21df881796d05a1b2117dd8868570a57b (patch) | |
tree | c65eee3681d1bf42f5943cff08719206b42fa6cd /core/java/android/hardware | |
parent | e70bf65423056c2f336602aa9b3942ea446225e4 (diff) | |
download | frameworks_base-4f8e5ce21df881796d05a1b2117dd8868570a57b.zip frameworks_base-4f8e5ce21df881796d05a1b2117dd8868570a57b.tar.gz frameworks_base-4f8e5ce21df881796d05a1b2117dd8868570a57b.tar.bz2 |
Camera: Query AudioService for shutter sound enforcement.
The AudioService now tracks the shutter sound enforcement status, in
addition to the existing approach. Check with it when doing shutter
sound operations.
Bug: 7032634
Change-Id: Ief855d3a36ca5679832cf439f5638b10f70b8636
Diffstat (limited to 'core/java/android/hardware')
-rw-r--r-- | core/java/android/hardware/Camera.java | 36 |
1 files changed, 34 insertions, 2 deletions
diff --git a/core/java/android/hardware/Camera.java b/core/java/android/hardware/Camera.java index 1e8671b..6624eb8 100644 --- a/core/java/android/hardware/Camera.java +++ b/core/java/android/hardware/Camera.java @@ -18,13 +18,18 @@ package android.hardware; import android.annotation.SdkConstant; import android.annotation.SdkConstant.SdkConstantType; +import android.content.Context; import android.graphics.ImageFormat; import android.graphics.Point; import android.graphics.Rect; import android.graphics.SurfaceTexture; +import android.media.IAudioService; import android.os.Handler; +import android.os.IBinder; import android.os.Looper; import android.os.Message; +import android.os.RemoteException; +import android.os.ServiceManager; import android.util.Log; import android.text.TextUtils; import android.view.Surface; @@ -192,7 +197,21 @@ public class Camera { * Returns the information about a particular camera. * If {@link #getNumberOfCameras()} returns N, the valid id is 0 to N-1. */ - public native static void getCameraInfo(int cameraId, CameraInfo cameraInfo); + public static void getCameraInfo(int cameraId, CameraInfo cameraInfo) { + _getCameraInfo(cameraId, cameraInfo); + IBinder b = ServiceManager.getService(Context.AUDIO_SERVICE); + IAudioService audioService = IAudioService.Stub.asInterface(b); + try { + if (audioService.isCameraSoundForced()) { + // Only set this when sound is forced; otherwise let native code + // decide. + cameraInfo.canDisableShutterSound = false; + } + } catch (RemoteException e) { + Log.e(TAG, "Audio service is unavailable for queries"); + } + } + private native static void _getCameraInfo(int cameraId, CameraInfo cameraInfo); /** * Information about a camera @@ -1185,7 +1204,20 @@ public class Camera { * @see CameraInfo#canDisableShutterSound * @see ShutterCallback */ - public native final boolean enableShutterSound(boolean enabled); + public final boolean enableShutterSound(boolean enabled) { + if (!enabled) { + IBinder b = ServiceManager.getService(Context.AUDIO_SERVICE); + IAudioService audioService = IAudioService.Stub.asInterface(b); + try { + if (audioService.isCameraSoundForced()) return false; + } catch (RemoteException e) { + Log.e(TAG, "Audio service is unavailable for queries"); + } + } + return _enableShutterSound(enabled); + } + + private native final boolean _enableShutterSound(boolean enabled); /** * Callback interface for zoom changes during a smooth zoom operation. |