summaryrefslogtreecommitdiffstats
path: root/src/com
diff options
context:
space:
mode:
Diffstat (limited to 'src/com')
-rw-r--r--src/com/android/camera/CaptureModule.java47
-rw-r--r--src/com/android/camera/CaptureUI.java9
-rw-r--r--src/com/android/camera/SettingsManager.java18
3 files changed, 59 insertions, 15 deletions
diff --git a/src/com/android/camera/CaptureModule.java b/src/com/android/camera/CaptureModule.java
index ab2c88685..a4658daef 100644
--- a/src/com/android/camera/CaptureModule.java
+++ b/src/com/android/camera/CaptureModule.java
@@ -207,6 +207,7 @@ public class CaptureModule implements CameraModule, PhotoController,
private int mJpegFileSizeEstimation;
private boolean mFirstPreviewLoaded;
private int[] mPrecaptureRequestHashCode = new int[MAX_NUM_CAM];
+ private int[] mLockRequestHashCode = new int[MAX_NUM_CAM];
private class MediaSaveNotifyThread extends Thread {
private Uri uri;
@@ -318,7 +319,9 @@ public class CaptureModule implements CameraModule, PhotoController,
if (CaptureResult.CONTROL_AF_STATE_FOCUSED_LOCKED == afState ||
CaptureResult.CONTROL_AF_STATE_NOT_FOCUSED_LOCKED == afState ||
CaptureResult.CONTROL_AF_STATE_PASSIVE_FOCUSED == afState ||
- CaptureResult.CONTROL_AF_STATE_PASSIVE_UNFOCUSED == afState) {
+ CaptureResult.CONTROL_AF_STATE_PASSIVE_UNFOCUSED == afState ||
+ (mLockRequestHashCode[id] == result.getRequest().hashCode() &&
+ afState == CaptureResult.CONTROL_AF_STATE_INACTIVE)) {
// CONTROL_AE_STATE can be null on some devices
if (aeState == null || (aeState == CaptureResult
.CONTROL_AE_STATE_CONVERGED) && isFlashOff(id)) {
@@ -453,7 +456,7 @@ public class CaptureModule implements CameraModule, PhotoController,
private int getCameraMode() {
String value = mSettingsManager.getValue(SettingsManager.KEY_SCENE_MODE);
- if (value != null && value.equals("-5")) return DUAL_MODE;
+ if (value != null && value.equals(SettingsManager.SCENE_MODE_DUAL_STRING)) return DUAL_MODE;
value = mSettingsManager.getValue(SettingsManager.KEY_MONO_ONLY);
if (value == null || !value.equals("on")) return BAYER_MODE;
return MONO_MODE;
@@ -696,9 +699,10 @@ public class CaptureModule implements CameraModule, PhotoController,
builder.addTarget(getPreviewSurface(id));
applySettingsForLockFocus(builder, id);
-
+ CaptureRequest request = builder.build();
+ mLockRequestHashCode[id] = request.hashCode();
mState[id] = STATE_WAITING_LOCK;
- mCaptureSession[id].capture(builder.build(), mCaptureCallback, mCameraHandler);
+ mCaptureSession[id].capture(request, mCaptureCallback, mCameraHandler);
} catch (CameraAccessException e) {
e.printStackTrace();
}
@@ -770,7 +774,7 @@ public class CaptureModule implements CameraModule, PhotoController,
// Orientation
int rotation = mActivity.getWindowManager().getDefaultDisplay().getRotation();
- captureBuilder.set(CaptureRequest.JPEG_ORIENTATION, ORIENTATIONS.get(rotation));
+ captureBuilder.set(CaptureRequest.JPEG_ORIENTATION, CameraUtil.getJpegRotation(id, rotation));
captureBuilder.set(CaptureRequest.CONTROL_MODE, CaptureRequest.CONTROL_MODE_AUTO);
captureBuilder.addTarget(getPreviewSurface(id));
captureBuilder.set(CaptureRequest.CONTROL_AF_MODE, mControlAFMode);
@@ -1223,6 +1227,7 @@ public class CaptureModule implements CameraModule, PhotoController,
} else {
initializeSecondTime();
}
+ mUI.reInitUI();
mActivity.updateStorageSpaceAndHint();
estimateJpegFileSize();
mUI.enableShutter(true);
@@ -1388,13 +1393,27 @@ public class CaptureModule implements CameraModule, PhotoController,
}
}
- public boolean isTouchToFocusAllowed() {
+ public boolean isTakingPicture() {
for (int i = 0; i < mTakingPicture.length; i++) {
- if (mTakingPicture[i]) return false;
+ if (mTakingPicture[i]) return true;
}
+ return false;
+ }
+
+ private boolean isTouchToFocusAllowed() {
+ if (isTakingPicture() || isSceneModeOn()) return false;
return true;
}
+ private boolean isSceneModeOn() {
+ String scene = mSettingsManager.getValue(SettingsManager.KEY_SCENE_MODE);
+ if (scene == null) return false;
+ int mode = Integer.parseInt(scene);
+ if (mode != SettingsManager.SCENE_MODE_DUAL_INT && mode != CaptureRequest
+ .CONTROL_SCENE_MODE_DISABLED) return true;
+ return false;
+ }
+
@Override
public void onCountDownFinished() {
mUI.showUIAfterCountDown();
@@ -1690,6 +1709,10 @@ public class CaptureModule implements CameraModule, PhotoController,
updatePreview = true;
applyFlash(mPreviewRequestBuilder[cameraId], cameraId);
break;
+ case SettingsManager.KEY_ISO:
+ updatePreview = true;
+ applyIso(mPreviewRequestBuilder[cameraId]);
+ break;
}
return updatePreview;
}
@@ -1720,7 +1743,8 @@ public class CaptureModule implements CameraModule, PhotoController,
String value = mSettingsManager.getValue(SettingsManager.KEY_SCENE_MODE);
if (value == null) return;
int mode = Integer.parseInt(value);
- if (mode != CaptureRequest.CONTROL_SCENE_MODE_DISABLED && mode != -5) {
+ if (mode != CaptureRequest.CONTROL_SCENE_MODE_DISABLED && mode !=
+ SettingsManager.SCENE_MODE_DUAL_INT) {
request.set(CaptureRequest.CONTROL_SCENE_MODE, mode);
request.set(CaptureRequest.CONTROL_MODE, CaptureRequest.CONTROL_MODE_USE_SCENE_MODE);
} else {
@@ -1945,9 +1969,12 @@ public class CaptureModule implements CameraModule, PhotoController,
}
private int mCurrentMode;
+
private boolean checkNeedToRestart(String value) {
- if (value.equals("-5") && mCurrentMode != DUAL_MODE) return true;
- if (!value.equals("-5") && mCurrentMode == DUAL_MODE) return true;
+ if (value.equals(SettingsManager.SCENE_MODE_DUAL_STRING) && mCurrentMode != DUAL_MODE)
+ return true;
+ if (!value.equals(SettingsManager.SCENE_MODE_DUAL_STRING) && mCurrentMode == DUAL_MODE)
+ return true;
return false;
}
diff --git a/src/com/android/camera/CaptureUI.java b/src/com/android/camera/CaptureUI.java
index f47401514..50104570d 100644
--- a/src/com/android/camera/CaptureUI.java
+++ b/src/com/android/camera/CaptureUI.java
@@ -90,7 +90,6 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
SettingsManager.KEY_TIMER,
SettingsManager.KEY_CAMERA_SAVEPATH,
SettingsManager.KEY_LONGSHOT,
- SettingsManager.KEY_ISO,
SettingsManager.KEY_EXPOSURE,
SettingsManager.KEY_WHITE_BALANCE,
SettingsManager.KEY_CAMERA2
@@ -275,6 +274,12 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
return mSceneAndFilterLayout;
}
+ public void reInitUI() {
+ initializeSettingMenu();
+ initSceneModeButton();
+ initFilterModeButton();
+ }
+
// called from onResume but only the first time
public void initializeFirstTime() {
// Initialize shutter button.
@@ -987,7 +992,7 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
mThumbnail.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- if (!CameraControls.isAnimating() && mModule.isTouchToFocusAllowed())
+ if (!CameraControls.isAnimating() && !mModule.isTakingPicture())
mActivity.gotoGallery();
}
});
diff --git a/src/com/android/camera/SettingsManager.java b/src/com/android/camera/SettingsManager.java
index 86ecd6200..a01d2543b 100644
--- a/src/com/android/camera/SettingsManager.java
+++ b/src/com/android/camera/SettingsManager.java
@@ -57,6 +57,9 @@ import java.util.Set;
public class SettingsManager implements ListMenu.SettingsListener {
public static final int RESOURCE_TYPE_THUMBNAIL = 0;
public static final int RESOURCE_TYPE_LARGEICON = 1;
+ // Custom-Scenemodes start from 100
+ public static final int SCENE_MODE_DUAL_INT = 100;
+ public static final String SCENE_MODE_DUAL_STRING = "100";
public static final String KEY_CAMERA_SAVEPATH = "pref_camera2_savepath_key";
public static final String KEY_RECORD_LOCATION = "pref_camera2_recordlocation_key";
public static final String KEY_JPEG_QUALITY = "pref_camera2_jpegquality_key";
@@ -80,7 +83,6 @@ public class SettingsManager implements ListMenu.SettingsListener {
public static final String KEY_INITIAL_CAMERA = "pref_camera2_initial_camera_key";
private static final String TAG = "SnapCam_SettingsManager";
private static final List<CameraCharacteristics> mCharacteristics = new ArrayList<>();
- private static final int NOT_FOUND = -1;
private static SettingsManager sInstance;
@@ -636,6 +638,16 @@ public class SettingsManager implements ListMenu.SettingsListener {
return maxAfRegions != null && maxAfRegions > 0;
}
+ public boolean isFixedFocus(int id) {
+ Float focusDistance = mCharacteristics.get(id).get(CameraCharacteristics
+ .LENS_INFO_MINIMUM_FOCUS_DISTANCE);
+ if (focusDistance == null || focusDistance == 0) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
public boolean isFlashSupported(int id) {
return mCharacteristics.get(id).get(CameraCharacteristics.FLASH_INFO_AVAILABLE) &&
mValuesMap.get(KEY_FLASH_MODE) != null;
@@ -667,7 +679,7 @@ public class SettingsManager implements ListMenu.SettingsListener {
.CONTROL_AVAILABLE_SCENE_MODES);
List<String> modes = new ArrayList<>();
modes.add("0"); // need special case handle for auto scene mode
- if (mIsMonoCameraPresent) modes.add("-5"); // need special case handle for dual mode
+ if (mIsMonoCameraPresent) modes.add(SCENE_MODE_DUAL_STRING); // need special case handle for dual mode
for (int mode : sceneModes) {
modes.add("" + mode);
}
@@ -730,7 +742,7 @@ public class SettingsManager implements ListMenu.SettingsListener {
dependency.add(new KeyValue(KEY_CLEARSIGHT, "off"));
dependency.add(new KeyValue(KEY_MONO_PREVIEW, "off"));
break;
- case "-5":
+ case SCENE_MODE_DUAL_STRING:
dependency.add(new KeyValue(KEY_LONGSHOT, "off"));
dependency.add(new KeyValue(KEY_MONO_ONLY, "off"));
break;