diff options
| author | Camera Software Integration <camswint@quicinc.com> | 2018-09-13 21:56:06 -0700 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2018-09-13 21:56:06 -0700 |
| commit | bd07a4570d4f9e2c898276922564cac9dd66f153 (patch) | |
| tree | ba4fbd0924b255705aac9f2b73a75de4f091a925 | |
| parent | 2dafbcd99b44528e37705643456c251397f93a1a (diff) | |
| parent | cb370f15a0d37c0ff65d0dcfb4cec411060946f0 (diff) | |
Merge "SnapdragonCamera:Fix manual focus" into camera.lnx.3.1
| -rwxr-xr-x | src/com/android/camera/CaptureModule.java | 25 | ||||
| -rwxr-xr-x | src/com/android/camera/CaptureUI.java | 7 | ||||
| -rwxr-xr-x | src/com/android/camera/SettingsManager.java | 9 | ||||
| -rw-r--r-- | src/com/android/camera/ui/OneUICameraControls.java | 5 | ||||
| -rw-r--r-- | src/com/android/camera/ui/ProMode.java | 17 |
5 files changed, 48 insertions, 15 deletions
diff --git a/src/com/android/camera/CaptureModule.java b/src/com/android/camera/CaptureModule.java index ad17a7fbd..e0e08df3c 100755 --- a/src/com/android/camera/CaptureModule.java +++ b/src/com/android/camera/CaptureModule.java @@ -106,6 +106,7 @@ import com.android.camera.imageprocessor.filter.UbifocusFilter; import com.android.camera.mpo.MpoInterface; import com.android.camera.ui.CountDownView; import com.android.camera.ui.ModuleSwitcher; +import com.android.camera.ui.ProMode; import com.android.camera.ui.RotateTextToast; import com.android.camera.ui.TrackingFocusRenderer; import com.android.camera.util.ApiHelper; @@ -1087,6 +1088,7 @@ public class CaptureModule implements CameraModule, PhotoController, private void applyFocusDistance(CaptureRequest.Builder builder, String value) { if (value == null) return; float valueF = Float.valueOf(value); + if (valueF < 0) return; builder.set(CaptureRequest.CONTROL_AF_MODE, CaptureRequest.CONTROL_AF_MODE_OFF); builder.set(CaptureRequest.LENS_FOCUS_DISTANCE, valueF); } @@ -2178,18 +2180,21 @@ public class CaptureModule implements CameraModule, PhotoController, return; } try { - CaptureRequest.Builder builder = getRequestBuilder(id); - builder.setTag(id); - addPreviewSurface(builder, null, id); + if (mUI.getCurrentProMode() != ProMode.MANUAL_MODE) { + CaptureRequest.Builder builder = getRequestBuilder(id); + builder.setTag(id); + addPreviewSurface(builder, null, id); + applySettingsForUnlockFocus(builder, id); + mCaptureSession[id].capture(builder.build(), mCaptureCallback, mCameraHandler); + } - applySettingsForUnlockFocus(builder, id); - mCaptureSession[id].capture(builder.build(), mCaptureCallback, mCameraHandler); mState[id] = STATE_PREVIEW; if (id == getMainCameraId()) { mActivity.runOnUiThread(new Runnable() { @Override public void run() { - mUI.clearFocus(); + if (mUI.getCurrentProMode() != ProMode.MANUAL_MODE) + mUI.clearFocus(); } }); } @@ -4542,7 +4547,13 @@ public class CaptureModule implements CameraModule, PhotoController, break; case SettingsManager.KEY_FOCUS_DISTANCE: updatePreview = true; - applyFocusDistance(mPreviewRequestBuilder[cameraId], value); + if (mUI.getCurrentProMode() == ProMode.MANUAL_MODE) { + applyFocusDistance(mPreviewRequestBuilder[cameraId], value); + } else { + //set AF mode when manual mode is off + mPreviewRequestBuilder[cameraId].set( + CaptureRequest.CONTROL_AF_MODE, mControlAFMode); + } } return updatePreview; } diff --git a/src/com/android/camera/CaptureUI.java b/src/com/android/camera/CaptureUI.java index 753fa84a1..aecb7ed93 100755 --- a/src/com/android/camera/CaptureUI.java +++ b/src/com/android/camera/CaptureUI.java @@ -74,6 +74,7 @@ import com.android.camera.ui.CountDownView; import com.android.camera.ui.FlashToggleButton; import com.android.camera.ui.FocusIndicator; import com.android.camera.ui.PieRenderer; +import com.android.camera.ui.ProMode; import com.android.camera.ui.RenderOverlay; import com.android.camera.ui.RotateImageView; import com.android.camera.ui.RotateLayout; @@ -1715,6 +1716,9 @@ public class CaptureUI implements FocusOverlayManager.FocusUI, } }else if(state.key.equals(SettingsManager.KEY_FLASH_MODE) ) { enableView(mFlashButton, SettingsManager.KEY_FLASH_MODE); + }else if (state.key.equals(SettingsManager.KEY_FOCUS_DISTANCE)) { + if (mPieRenderer != null) + mPieRenderer.setVisible(false); } } } @@ -1845,4 +1849,7 @@ public class CaptureUI implements FocusOverlayManager.FocusUI, return mVideoButton; } + public int getCurrentProMode() { + return mCameraControls.getPromode(); + } } diff --git a/src/com/android/camera/SettingsManager.java b/src/com/android/camera/SettingsManager.java index 5dcaa882a..6412d75f2 100755 --- a/src/com/android/camera/SettingsManager.java +++ b/src/com/android/camera/SettingsManager.java @@ -568,9 +568,12 @@ public class SettingsManager implements ListMenu.SettingsListener { } } - public void setFocusDistance(String key, float value, float minFocus) { - boolean isSuccess = setFocusValue(key, value); - if (isSuccess) { + public void setFocusDistance(String key, boolean forceNotify,float value, float minFocus) { + boolean isSuccess = false; + if (value >= 0) { + isSuccess = setFocusValue(key, value); + } + if (isSuccess || forceNotify) { List<SettingState> list = new ArrayList<>(); Values values = new Values("" + value * minFocus, null); SettingState ss = new SettingState(KEY_FOCUS_DISTANCE, values); diff --git a/src/com/android/camera/ui/OneUICameraControls.java b/src/com/android/camera/ui/OneUICameraControls.java index 236a49243..c0148db3e 100644 --- a/src/com/android/camera/ui/OneUICameraControls.java +++ b/src/com/android/camera/ui/OneUICameraControls.java @@ -38,6 +38,7 @@ import android.widget.SeekBar; import android.widget.TextView; import com.android.camera.CaptureModule; +import com.android.camera.SettingsManager; import com.android.camera.Storage; import com.android.camera.imageprocessor.filter.BeautificationFilter; @@ -558,6 +559,10 @@ public class OneUICameraControls extends RotatableLayout { resetProModeIcons(); } + public int getPromode() { + return mProMode != null ? mProMode.getMode() : -99; + } + private void resetProModeIcons() { mExposureText.setSelected(false); mManualText.setSelected(false); diff --git a/src/com/android/camera/ui/ProMode.java b/src/com/android/camera/ui/ProMode.java index b55d0c425..4f9faad41 100644 --- a/src/com/android/camera/ui/ProMode.java +++ b/src/com/android/camera/ui/ProMode.java @@ -79,7 +79,7 @@ public class ProMode extends View { private int mMode = NO_MODE; private Context mContext; private ViewGroup mParent; - private float minFocus; + private float minFocus = -1; private OneUICameraControls mUI; private int mWidth; private int mHeight; @@ -190,7 +190,13 @@ public class ProMode extends View { } public void setMode(int mode) { + int lastMode = mMode; mMode = mode; + if (lastMode == MANUAL_MODE && mode != MANUAL_MODE) { + //set key focus value to notify capture module to reset focus mode + mSettingsManager.setFocusDistance(SettingsManager.KEY_FOCUS_DISTANCE, true, + -1f, -1f); + } removeViews(); if (mMode == NO_MODE) { setVisibility(INVISIBLE); @@ -204,7 +210,7 @@ public class ProMode extends View { minFocus = mSettingsManager .getMinimumFocusDistance(mSettingsManager.getCurrentCameraId()); float value = mSettingsManager.getFocusValue(SettingsManager.KEY_FOCUS_DISTANCE); - setSlider(value); + setSlider(value,true); int stride = mCurveRight - mCurveLeft; for (int i = 0; i < 2; i++) { TextView v = new TextView(mContext); @@ -290,9 +296,10 @@ public class ProMode extends View { invalidate(); } - public void setSlider(float slider) { + public void setSlider(float slider,boolean forceNotify) { mSlider = slider; - mSettingsManager.setFocusDistance(SettingsManager.KEY_FOCUS_DISTANCE, mSlider, minFocus); + mSettingsManager.setFocusDistance(SettingsManager.KEY_FOCUS_DISTANCE, forceNotify, + mSlider, minFocus); mUI.updateProModeText(mMode, "Manual"); invalidate(); } @@ -341,7 +348,7 @@ public class ProMode extends View { if (mMode == MANUAL_MODE) { float slider = getSlider(event.getX(), event.getY()); if (slider >= 0) { - setSlider(slider); + setSlider(slider,false); } } else { int idx = findButton(event.getX(), event.getY()); |
