From: Erin Dahlgren Date: Fri, 13 Dec 2013 01:36:32 +0000 (-0800) Subject: Add a flash callback for video mode toggle. X-Git-Tag: android-x86-6.0-r3~1580 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=fce8a0b023bf88b2320b614dfaf7c67dcf00c9be;p=android-x86%2Fpackages-apps-Camera2.git Add a flash callback for video mode toggle. Bug: 12089860 Change-Id: I97941468f79b4fb39aefb6f0662a7540c6121abe --- diff --git a/src/com/android/camera/VideoModule.java b/src/com/android/camera/VideoModule.java index 21302f917..fe19547da 100644 --- a/src/com/android/camera/VideoModule.java +++ b/src/com/android/camera/VideoModule.java @@ -366,6 +366,15 @@ public class VideoModule extends CameraModule } + private final ButtonManager.ButtonCallback mFlashButtonCallback = + new ButtonManager.ButtonCallback() { + @Override + public void onStateChanged(int state) { + // Update flash parameters. + enableTorchMode(true); + } + }; + private final ButtonManager.ButtonCallback mCameraButtonCallback = new ButtonManager.ButtonCallback() { @Override @@ -390,7 +399,7 @@ public class VideoModule extends CameraModule startPreview(); initializeVideoSnapshot(); mUI.initializeZoom(mParameters); - mUI.onCameraOpened(mCameraButtonCallback); + mUI.onCameraOpened(mFlashButtonCallback, mCameraButtonCallback); } private void startPlayVideoActivity() { @@ -1291,7 +1300,7 @@ public class VideoModule extends CameraModule mParameters.setPreviewFrameRate(mProfile.videoFrameRate); } - forceFlashOffIfSupported(!mUI.isVisible()); + enableTorchMode(settingsManager.isCameraBackFacing()); // Set white balance parameter. String whiteBalance = settingsManager.get(SettingsManager.SETTING_WHITE_BALANCE); @@ -1507,11 +1516,22 @@ public class VideoModule extends CameraModule } } - private void forceFlashOffIfSupported(boolean forceOff) { + /** + * Used to update the flash mode. Video mode can turn on the flash as torch + * mode, which we would like to turn on and off when we switching in and + * out to the preview. + * + * @param enable Whether torch mode can be enabled. + */ + private void enableTorchMode(boolean enable) { + if (mParameters.getFlashMode() == null) { + return; + } + SettingsManager settingsManager = mActivity.getSettingsManager(); String flashMode; - if (!forceOff) { + if (enable) { flashMode = settingsManager.get(SettingsManager.SETTING_VIDEOCAMERA_FLASH_MODE); } else { flashMode = Parameters.FLASH_MODE_OFF; @@ -1527,27 +1547,15 @@ public class VideoModule extends CameraModule mParameters.setFlashMode(flashMode); } } - } - - /** - * Used to update the flash mode. Video mode can turn on the flash as torch - * mode, which we would like to turn on and off when we switching in and - * out to the preview. - * - * @param forceOff whether we want to force the flash off. - */ - private void forceFlashOff(boolean forceOff) { - if (!mPreviewing || mParameters.getFlashMode() == null) { - return; - } - forceFlashOffIfSupported(forceOff); mCameraDevice.setParameters(mParameters); mUI.updateOnScreenIndicators(mParameters); } @Override public void onPreviewVisibilityChanged(boolean visible) { - forceFlashOff(!visible); + if (mPreviewing) { + enableTorchMode(visible); + } } private final class JpegPictureCallback implements CameraPictureCallback { diff --git a/src/com/android/camera/VideoUI.java b/src/com/android/camera/VideoUI.java index 7a5f8db23..b03b5bbfb 100644 --- a/src/com/android/camera/VideoUI.java +++ b/src/com/android/camera/VideoUI.java @@ -290,12 +290,13 @@ public class VideoUI implements PreviewStatusListener, SurfaceHolder.Callback { setTransformMatrix(mPreviewWidth, mPreviewHeight); } - public void onCameraOpened(ButtonManager.ButtonCallback cameraCallback) { + public void onCameraOpened(ButtonManager.ButtonCallback flashCallback, + ButtonManager.ButtonCallback cameraCallback) { ButtonManager buttonManager = mActivity.getButtonManager(); SettingsManager settingsManager = mActivity.getSettingsManager(); if (settingsManager.isCameraBackFacing()) { buttonManager.enableButton(ButtonManager.BUTTON_TORCH, R.id.flash_toggle_button, - null, R.array.video_flashmode_icons); + flashCallback, R.array.video_flashmode_icons); } else { buttonManager.disableButton(ButtonManager.BUTTON_TORCH, R.id.flash_toggle_button);