diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/Camera1.java b/cameraview/src/main/java/com/otaliastudios/cameraview/Camera1.java index 0041402f..8f70fe07 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/Camera1.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/Camera1.java @@ -180,7 +180,7 @@ class Camera1 extends CameraController implements Camera.PreviewCallback, Camera mergeLocation(params, null); mergeWhiteBalance(params, WhiteBalance.DEFAULT); mergeHdr(params, Hdr.DEFAULT); - applyPlaySound(); + mergePlaySound(true); params.setRecordingHint(mSessionType == SessionType.VIDEO); mCamera.setParameters(params); @@ -370,14 +370,17 @@ class Camera1 extends CameraController implements Camera.PreviewCallback, Camera } @TargetApi(17) - private void applyPlaySound() { + private boolean mergePlaySound(boolean oldPlaySound) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { Camera.CameraInfo info = new Camera.CameraInfo(); Camera.getCameraInfo(mCameraId, info); if (info.canDisableShutterSound && isCameraAvailable()) { mCamera.enableShutterSound(mPlaySounds); + return true; } } + mPlaySounds = oldPlaySound; + return false; } @@ -878,8 +881,16 @@ class Camera1 extends CameraController implements Camera.PreviewCallback, Camera @Override void setPlaySounds(boolean playSounds) { + final boolean old = mPlaySounds; mPlaySounds = playSounds; - applyPlaySound(); + schedule(null, true, new Runnable() { + @Override + public void run() { + if (!mergePlaySound(old)) { + mPlaySounds = old; + } + } + }); } // ----------------- diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java index 4b0a1dec..5288fa0c 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java @@ -1361,6 +1361,7 @@ public class CameraView extends FrameLayout { */ public void setPlaySounds(boolean playSounds) { mPlaySounds = playSounds && Build.VERSION.SDK_INT >= 16; + mCameraController.setPlaySounds(playSounds); } /**