summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCamera Software Integration <camswint@quicinc.com>2018-09-13 21:56:06 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2018-09-13 21:56:06 -0700
commitbd07a4570d4f9e2c898276922564cac9dd66f153 (patch)
treeba4fbd0924b255705aac9f2b73a75de4f091a925
parent2dafbcd99b44528e37705643456c251397f93a1a (diff)
parentcb370f15a0d37c0ff65d0dcfb4cec411060946f0 (diff)
Merge "SnapdragonCamera:Fix manual focus" into camera.lnx.3.1
-rwxr-xr-xsrc/com/android/camera/CaptureModule.java25
-rwxr-xr-xsrc/com/android/camera/CaptureUI.java7
-rwxr-xr-xsrc/com/android/camera/SettingsManager.java9
-rw-r--r--src/com/android/camera/ui/OneUICameraControls.java5
-rw-r--r--src/com/android/camera/ui/ProMode.java17
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());