From 829b0c9d9060fec9f7565b68f40e6c874b464d7f Mon Sep 17 00:00:00 2001 From: zhuw Date: Tue, 26 Dec 2017 17:58:35 +0800 Subject: SnapdragonCamera: Set flash mode just after UI change if click flash mode icon, set flash mode directly Change-Id: I702ccbbbdb875e4b3326a04405733408fe70555d CRs-Fixed: 2152338 --- src/com/android/camera/CaptureModule.java | 38 ++++++++++++++++++++++++ src/com/android/camera/ui/FlashToggleButton.java | 3 +- 2 files changed, 40 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/com/android/camera/CaptureModule.java b/src/com/android/camera/CaptureModule.java index 372f9e2ff..7aeed1a1f 100755 --- a/src/com/android/camera/CaptureModule.java +++ b/src/com/android/camera/CaptureModule.java @@ -4613,6 +4613,42 @@ public class CaptureModule implements CameraModule, PhotoController, } } + private void applyFlashForUIChange(CaptureRequest.Builder request, int id) { + if (!checkSessionAndBuilder(mCaptureSession[id], request)) { + return; + } + String redeye = mSettingsManager.getValue(SettingsManager.KEY_REDEYE_REDUCTION); + if (redeye != null && redeye.equals("on") && !mLongshotActive) { + Log.w(TAG, "redeye mode is on, can't set android.flash.mode"); + return; + } + if (!mSettingsManager.isFlashSupported(id)) { + Log.w(TAG, "flash not supported, can't set android.flash.mode"); + return; + } + String value = mSettingsManager.getValue(SettingsManager.KEY_FLASH_MODE); + switch (value) { + case "on": + request.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON_ALWAYS_FLASH); + request.set(CaptureRequest.FLASH_MODE, CaptureRequest.FLASH_MODE_SINGLE); + break; + case "auto": + request.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON_AUTO_FLASH); + request.set(CaptureRequest.FLASH_MODE, CaptureRequest.FLASH_MODE_SINGLE); + break; + case "off": + request.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON); + request.set(CaptureRequest.FLASH_MODE, CaptureRequest.FLASH_MODE_OFF); + break; + } + try { + mCaptureSession[id].setRepeatingRequest(request + .build(), mCaptureCallback, mCameraHandler); + } catch (CameraAccessException e) { + Log.e(TAG, "Camera Access Exception in applyFlashForUIChange, apply failed"); + } + } + private void applyFaceDetection(CaptureRequest.Builder request) { String value = mSettingsManager.getValue(SettingsManager.KEY_FACE_DETECTION); if (value != null && value.equals("on")) { @@ -4825,6 +4861,8 @@ public class CaptureModule implements CameraModule, PhotoController, updateVideoFlash(); return; case SettingsManager.KEY_FLASH_MODE: + applyFlashForUIChange(mPreviewRequestBuilder[getMainCameraId()], + getMainCameraId()); // When enable APP-ZSL, run restartSession if (SettingsManager.getInstance().isZSLInAppEnabled()) { if (count == 0) restartSession(false); diff --git a/src/com/android/camera/ui/FlashToggleButton.java b/src/com/android/camera/ui/FlashToggleButton.java index 2dd37cbbc..a75a11732 100644 --- a/src/com/android/camera/ui/FlashToggleButton.java +++ b/src/com/android/camera/ui/FlashToggleButton.java @@ -64,7 +64,8 @@ public class FlashToggleButton extends RotateImageView { } mSettingsManager = SettingsManager.getInstance(); mIndex = mSettingsManager.getValueIndex(key); - if (mIndex == -1) { + String redeye = mSettingsManager.getValue(SettingsManager.KEY_REDEYE_REDUCTION); + if (mIndex == -1 || (redeye != null && redeye.equals("on"))) { setVisibility(GONE); return; } else { -- cgit v1.2.3 From 02c4652b18ec0e3c4217fec6c15260ad8b743d24 Mon Sep 17 00:00:00 2001 From: zhuw Date: Thu, 28 Dec 2017 14:18:50 +0800 Subject: SnapdragonCamera: Fix preFlash not work when TAF in lowlight set Afmode and Flashmode for TAF request builder Change-Id: Ifa3db023828199a01fb1163cca0ebcffb3d3a276 CRs-Fixed: 2161161 --- src/com/android/camera/CaptureModule.java | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src') diff --git a/src/com/android/camera/CaptureModule.java b/src/com/android/camera/CaptureModule.java index 7aeed1a1f..3ebc1af58 100755 --- a/src/com/android/camera/CaptureModule.java +++ b/src/com/android/camera/CaptureModule.java @@ -1495,6 +1495,7 @@ public class CaptureModule implements CameraModule, PhotoController, mControlAFMode = CaptureRequest.CONTROL_AF_MODE_AUTO; applySettingsForAutoFocus(builder, id); mState[id] = STATE_WAITING_TOUCH_FOCUS; + applyFlashForUIChange(builder, id);//apply flash mode and AEmode for this temp builder mCaptureSession[id].capture(builder.build(), mCaptureCallback, mCameraHandler); setAFModeToPreview(id, mControlAFMode); Message message = mCameraHandler.obtainMessage(CANCEL_TOUCH_FOCUS, mCameraId[id]); @@ -4613,6 +4614,7 @@ public class CaptureModule implements CameraModule, PhotoController, } } + //response to switch flash mode options in UI, repeat request as soon as switching private void applyFlashForUIChange(CaptureRequest.Builder request, int id) { if (!checkSessionAndBuilder(mCaptureSession[id], request)) { return; -- cgit v1.2.3