summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/CaptureModule.java
diff options
context:
space:
mode:
authorByunghun Jeon <bjeon@codeaurora.org>2016-05-10 11:38:21 -0700
committerByunghun Jeon <bjeon@codeaurora.org>2016-05-31 13:18:21 -0700
commit0fdbb4a33a2deb480f877b904203c7f04ef507d0 (patch)
tree42223718b561d86603ef46118c771c617fdba245 /src/com/android/camera/CaptureModule.java
parente8d4ba774d224e5076576ba4c29d1fc248456b40 (diff)
downloadandroid_packages_apps_Snap-0fdbb4a33a2deb480f877b904203c7f04ef507d0.tar.gz
android_packages_apps_Snap-0fdbb4a33a2deb480f877b904203c7f04ef507d0.tar.bz2
android_packages_apps_Snap-0fdbb4a33a2deb480f877b904203c7f04ef507d0.zip
SnapdragonCamera: Add SettingsManager, scene, and filter
Add SettingsManager to work as a database for settings. It will handle all dependencies and populate the values. Add scene mode and filter. Restructure UI and menu by combining them and leave the handling of settings to SettingsManager Change-Id: I185163fdddbffd29434e6a9c41b33be6d3388f88 CRs-Fixed: 1018118
Diffstat (limited to 'src/com/android/camera/CaptureModule.java')
-rw-r--r--src/com/android/camera/CaptureModule.java809
1 files changed, 422 insertions, 387 deletions
diff --git a/src/com/android/camera/CaptureModule.java b/src/com/android/camera/CaptureModule.java
index 90e1794ac..574fe4daf 100644
--- a/src/com/android/camera/CaptureModule.java
+++ b/src/com/android/camera/CaptureModule.java
@@ -19,22 +19,6 @@
package com.android.camera;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.Semaphore;
-import java.util.concurrent.TimeUnit;
-
-import org.codeaurora.snapcam.R;
-import org.codeaurora.snapcam.filter.ClearSightImageProcessor;
-import org.codeaurora.snapcam.filter.ClearSightNativeEngine.ClearsightImage;
-
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
@@ -42,7 +26,6 @@ import android.content.res.Configuration;
import android.graphics.ImageFormat;
import android.graphics.Point;
import android.graphics.Rect;
-import android.graphics.YuvImage;
import android.hardware.camera2.CameraAccessException;
import android.hardware.camera2.CameraCaptureSession;
import android.hardware.camera2.CameraCharacteristics;
@@ -78,11 +61,31 @@ import com.android.camera.PhotoModule.NamedImages.NamedEntity;
import com.android.camera.ui.RotateTextToast;
import com.android.camera.util.CameraUtil;
+import org.codeaurora.snapcam.R;
+import org.codeaurora.snapcam.filter.ClearSightImageProcessor;
+
+import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.concurrent.Semaphore;
+import java.util.concurrent.TimeUnit;
+
public class CaptureModule implements CameraModule, PhotoController,
- MediaSaveService.Listener, ClearSightImageProcessor.Callback {
+ MediaSaveService.Listener, ClearSightImageProcessor.Callback,
+ SettingsManager.Listener {
public static final int DUAL_MODE = 0;
public static final int BAYER_MODE = 1;
public static final int MONO_MODE = 2;
+ //Todo: Read ids from the device dynamically
+ public static final int BAYER_ID = 0;
+ public static final int MONO_ID = 1;
+ public static final int FRONT_ID = 1;
+ private static final int BACK_MODE = 0;
+ private static final int FRONT_MODE = 1;
private static final int CANCEL_TOUCH_FOCUS_DELAY = 3000;
private static final int OPEN_CAMERA = 0;
private static final int CANCEL_TOUCH_FOCUS = 1;
@@ -117,11 +120,7 @@ public class CaptureModule implements CameraModule, PhotoController,
* Camera state: Waiting for the touch-to-focus to converge.
*/
private static final int STATE_WAITING_TOUCH_FOCUS = 5;
- //Todo: Read ids from the device dynamically
- private static final int BAYER_ID = 0;
- private static final int MONO_ID = 1;
private static final String TAG = "SnapCam_CaptureModule";
- private static int MODE = DUAL_MODE;
static {
ORIENTATIONS.append(Surface.ROTATION_0, 90);
@@ -149,7 +148,6 @@ public class CaptureModule implements CameraModule, PhotoController,
// The degrees of the device rotated clockwise from its natural orientation.
private int mOrientation = OrientationEventListener.ORIENTATION_UNKNOWN;
private int mJpegQuality;
- private Map<String, String> mSettings = new HashMap<String, String>();
private boolean mFirstTimeInitialized;
private boolean mInitialized = false;
private boolean mIsLinked = false;
@@ -161,13 +159,11 @@ public class CaptureModule implements CameraModule, PhotoController,
private String[] mCameraId = new String[MAX_NUM_CAM];
private CaptureUI mUI;
private CameraActivity mActivity;
- private PreferenceGroup mPreferenceGroup;
- private ComboPreferences mPreferences;
- private CameraCharacteristics[] mCharacteristics = new CameraCharacteristics[MAX_NUM_CAM];
- private List<Integer> mCharacteristicsIndex;
+ private List<Integer> mCameraIdList;
private float mZoomValue = 1f;
private FocusStateListener mFocusStateListener;
private LocationManager mLocationManager;
+ private SettingsManager mSettingsManager;
/**
* A {@link CameraCaptureSession } for camera preview.
*/
@@ -257,7 +253,7 @@ public class CaptureModule implements CameraModule, PhotoController,
CaptureResult.CONTROL_AF_STATE_PASSIVE_UNFOCUSED == afState) {
// CONTROL_AE_STATE can be null on some devices
if (aeState == null || (aeState == CaptureResult
- .CONTROL_AE_STATE_CONVERGED) && isFlashOff()) {
+ .CONTROL_AE_STATE_CONVERGED) && isFlashOff(id)) {
mState[id] = STATE_PICTURE_TAKEN;
captureStillPicture(id);
} else {
@@ -311,52 +307,7 @@ public class CaptureModule implements CameraModule, PhotoController,
process(result);
}
};
- private final CameraPreference.OnPreferenceChangedListener prefListener = new
- CameraPreference.OnPreferenceChangedListener() {
- @Override
- public void onSharedPreferenceChanged(ListPreference pref) {
- if (mPaused) return;
- if (CameraSettings.KEY_CAMERA_SAVEPATH.equals(pref.getKey())) {
- Storage.setSaveSDCard(
- mPreferences.getString(CameraSettings.KEY_CAMERA_SAVEPATH, "0")
- .equals("1"));
- mActivity.updateStorageSpaceAndHint();
- }
- switch (MODE) {
- case BAYER_MODE:
- applyPreference(0, pref);
- break;
- case MONO_MODE:
- applyPreference(1, pref);
- break;
- case DUAL_MODE:
- applyPreference(0, pref);
- applyPreference(1, pref);
- }
- mUI.overrideSettings(pref.getKey(), null);
- }
-
- @Override
- public void onSharedPreferenceChanged() {
- if (mPaused) return;
- boolean recordLocation = RecordLocationPreference.get(
- mPreferences, mContentResolver);
- mLocationManager.recordLocation(recordLocation);
- }
-
- @Override
- public void onRestorePreferencesClicked() {
- }
-
- @Override
- public void onOverriddenPreferencesClicked() {
- }
-
- @Override
- public void onCameraPickerClicked(int cameraId) {
- }
- };
private final CameraDevice.StateCallback mStateCallback = new CameraDevice.StateCallback() {
@Override
@@ -367,7 +318,7 @@ public class CaptureModule implements CameraModule, PhotoController,
if (mPaused) {
return;
}
- if (MODE == DUAL_MODE && id == BAYER_ID) {
+ if (isBackMode() && getMode() == DUAL_MODE && id == BAYER_ID) {
Message msg = mCameraHandler.obtainMessage(OPEN_CAMERA, MONO_ID);
mCameraHandler.sendMessage(msg);
}
@@ -376,8 +327,7 @@ public class CaptureModule implements CameraModule, PhotoController,
mActivity.runOnUiThread(new Runnable() {
@Override
public void run() {
- mUI.onCameraOpened(mCharacteristics, mCharacteristicsIndex,
- mPreferenceGroup, prefListener);
+ mUI.onCameraOpened(mCameraIdList);
}
});
}
@@ -418,23 +368,22 @@ public class CaptureModule implements CameraModule, PhotoController,
};
- public static boolean setMode(String value) {
- int mode = DUAL_MODE;
- switch (value) {
- case "dual":
- mode = DUAL_MODE;
+ private boolean isBackMode() {
+ String value = mSettingsManager.getValue(SettingsManager.KEY_CAMERA_ID);
+ if (value == null) return true;
+ if (Integer.parseInt(value) == BAYER_ID) return true;
+ return false;
+ }
+
+ private int getMode() {
+ String value = mSettingsManager.getValue(SettingsManager.KEY_DUAL_CAMERA);
+ return Integer.parseInt(value);
+ }
- break;
- case "bayer":
- mode = BAYER_MODE;
- break;
- case "mono":
- mode = MONO_MODE;
- break;
- }
- if (MODE == mode) return false;
- MODE = mode;
- return true;
+ private boolean isClearSightOn() {
+ String value = mSettingsManager.getValue(SettingsManager.KEY_CLEARSIGHT);
+ if (value == null) return false;
+ return isBackMode() && getMode() == DUAL_MODE && value.equals("on");
}
public static int getQualityNumber(String jpegQuality) {
@@ -471,8 +420,7 @@ public class CaptureModule implements CameraModule, PhotoController,
//Todo: test record location. Jack to provide instructions
// Initialize location service.
- boolean recordLocation = RecordLocationPreference.get(
- mPreferences, mContentResolver);
+ boolean recordLocation = getRecordLocation();
mLocationManager.recordLocation(recordLocation);
mUI.initializeFirstTime();
@@ -489,31 +437,38 @@ public class CaptureModule implements CameraModule, PhotoController,
private void initializeSecondTime() {
// Start location update if needed.
- boolean recordLocation = RecordLocationPreference.get(
- mPreferences, mContentResolver);
+ boolean recordLocation = getRecordLocation();
mLocationManager.recordLocation(recordLocation);
MediaSaveService s = mActivity.getMediaSaveService();
if (s != null) {
s.setListener(this);
}
mNamedImages = new NamedImages();
- mUI.initializeSecondTime();
}
private void createSession(final int id) {
if (mPaused || !mCameraOpened[id] || !mSurfaceReady) return;
+ Log.d(TAG, "createSession " + id);
List<Surface> list = new LinkedList<Surface>();
mUI.hidePreviewCover();
try {
Surface surface;
- if (id == BAYER_ID || (id == MONO_ID && MODE == MONO_MODE)) {
- SurfaceHolder sh = mUI.getSurfaceHolder();
- if (sh == null) {
- return;
+ if (isBackMode()) {
+ if (id == BAYER_ID || (id == MONO_ID && getMode() == MONO_MODE)) {
+ SurfaceHolder sh = mUI.getSurfaceHolder();
+ if (sh == null) {
+ return;
+ }
+ surface = sh.getSurface();
+ } else {
+ SurfaceHolder sh = mUI.getSurfaceHolder2();
+ if (sh == null) {
+ return;
+ }
+ surface = sh.getSurface();
}
- surface = sh.getSurface();
} else {
- SurfaceHolder sh = mUI.getSurfaceHolder2();
+ SurfaceHolder sh = mUI.getSurfaceHolder();
if (sh == null) {
return;
}
@@ -528,48 +483,46 @@ public class CaptureModule implements CameraModule, PhotoController,
CameraCaptureSession.StateCallback captureSessionCallback =
new CameraCaptureSession.StateCallback() {
- @Override
- public void onConfigured(CameraCaptureSession cameraCaptureSession) {
- // The camera is already closed
- if (mPaused || null == mCameraDevice[id]) {
- return;
- }
- // When the session is ready, we start displaying the preview.
- mCaptureSession[id] = cameraCaptureSession;
- initializePreviewConfiguration(id);
- try {
- if (MODE == DUAL_MODE) {
- linkBayerMono(id);
- mIsLinked = true;
+ @Override
+ public void onConfigured(CameraCaptureSession cameraCaptureSession) {
+ // The camera is already closed
+ if (mPaused || null == mCameraDevice[id]) {
+ return;
+ }
+ // When the session is ready, we start displaying the preview.
+ mCaptureSession[id] = cameraCaptureSession;
+ initializePreviewConfiguration(id);
+ try {
+ if (isBackMode() && getMode() == DUAL_MODE) {
+ linkBayerMono(id);
+ mIsLinked = true;
+ }
+ // Finally, we start displaying the camera preview.
+ mCaptureSession[id].setRepeatingRequest(mPreviewRequestBuilder[id]
+ .build(), mCaptureCallback, mCameraHandler);
+
+ if (isClearSightOn()) {
+ ClearSightImageProcessor.getInstance().onCaptureSessionConfigured(id == BAYER_ID, cameraCaptureSession);
+ }
+ } catch (CameraAccessException e) {
+ e.printStackTrace();
+ }
}
- // Finally, we start displaying the camera preview.
- mCaptureSession[id].setRepeatingRequest(mPreviewRequestBuilder[id]
- .build(), mCaptureCallback, mCameraHandler);
- ListPreference pref = mPreferenceGroup.findPreference(CameraSettings.KEY_CLEARSIGHT);
- if(pref.getValue().equals(mActivity.getString(R.string.pref_camera_clearsight_value_on))) {
- ClearSightImageProcessor.getInstance().onCaptureSessionConfigured(id == BAYER_ID, cameraCaptureSession);
+ @Override
+ public void onConfigureFailed(CameraCaptureSession cameraCaptureSession) {
+ Log.d(TAG, "cameracapturesession - onConfigureFailed");
}
- } catch (CameraAccessException e) {
- e.printStackTrace();
- }
- }
- @Override
- public void onConfigureFailed(CameraCaptureSession cameraCaptureSession) {
- Log.d(TAG, "cameracapturesession - onConfigureFailed");
- }
-
- @Override
- public void onClosed(CameraCaptureSession session) {
- Log.d(TAG, "cameracapturesession - onClosed");
- }
- };
+ @Override
+ public void onClosed(CameraCaptureSession session) {
+ Log.d(TAG, "cameracapturesession - onClosed");
+ }
+ };
list.add(surface);
- ListPreference pref = mPreferenceGroup.findPreference(CameraSettings.KEY_CLEARSIGHT);
- if(pref.getValue().equals(mActivity.getString(R.string.pref_camera_clearsight_value_on))) {
+ if(isClearSightOn()) {
ClearSightImageProcessor.getInstance().createCaptureSession(
id==BAYER_ID, mCameraDevice[id], list, captureSessionCallback);
} else {
@@ -593,8 +546,27 @@ public class CaptureModule implements CameraModule, PhotoController,
}
}
+ public void reinit() {
+ String pictureSize = mSettingsManager.getValue(SettingsManager
+ .KEY_PICTURE_SIZE);
+
+ Size size = parsePictureSize(pictureSize);
+ mUI.setPreviewSize(size.getHeight(), size.getWidth());
+ mSettingsManager.reinit(getMainCameraId());
+ }
+
+ public boolean getRecordLocation() {
+ String value = mSettingsManager.getValue(SettingsManager.KEY_RECORD_LOCATION);
+ if (value == null) value = RecordLocationPreference.VALUE_NONE;
+ return RecordLocationPreference.VALUE_ON.equals(value);
+ }
+
@Override
public void init(CameraActivity activity, View parent) {
+ mActivity = activity;
+ mSettingsManager = SettingsManager.getInstance();
+ mSettingsManager.registerListener(this);
+ mSettingsManager.init();
Log.d(TAG, "init");
for (int i = 0; i < MAX_NUM_CAM; i++) {
mCameraOpened[i] = false;
@@ -602,32 +574,20 @@ public class CaptureModule implements CameraModule, PhotoController,
}
mSurfaceReady = false;
- mActivity = activity;
for (int i = 0; i < MAX_NUM_CAM; i++) {
mState[i] = STATE_PREVIEW;
}
- mPreferences = new ComboPreferences(mActivity);
- CameraSettings.upgradeGlobalPreferences(mPreferences.getGlobal(), activity);
-
- mPreferences.setLocalId(mActivity, BAYER_ID);
- CameraSettings.upgradeLocalPreferences(mPreferences.getLocal());
-
- PreferenceInflater inflater = new PreferenceInflater(mActivity);
- PreferenceGroup group =
- (PreferenceGroup) inflater.inflate(R.xml.camera_preferences);
- mPreferenceGroup = group;
-
- ListPreference pref = group.findPreference(CameraSettings.KEY_DUAL_CAMERA);
- setMode(pref.getValue());
-
mContentResolver = mActivity.getContentResolver();
mUI = new CaptureUI(activity, this, parent);
mUI.initializeControlByIntent();
+ String pictureSize = mSettingsManager.getValue(SettingsManager.KEY_PICTURE_SIZE);
+ Size size = parsePictureSize(pictureSize);
+ mUI.setPreviewSize(size.getHeight(), size.getWidth());
mFocusStateListener = new FocusStateListener(mUI);
mLocationManager = new LocationManager(mActivity, mUI);
- Storage.setSaveSDCard(
- mPreferences.getString(CameraSettings.KEY_CAMERA_SAVEPATH, "0").equals("1"));
+ Storage.setSaveSDCard(mSettingsManager.getValue(SettingsManager
+ .KEY_CAMERA_SAVEPATH).equals("1"));
}
/**
@@ -635,17 +595,21 @@ public class CaptureModule implements CameraModule, PhotoController,
*/
private void takePicture() {
Log.d(TAG, "takePicture");
- switch (MODE) {
- case DUAL_MODE:
- lockFocus(BAYER_ID);
- lockFocus(MONO_ID);
- break;
- case BAYER_MODE:
- lockFocus(BAYER_ID);
- break;
- case MONO_MODE:
- lockFocus(MONO_ID);
- break;
+ if (isBackMode()) {
+ switch (getMode()) {
+ case DUAL_MODE:
+ lockFocus(BAYER_ID);
+ lockFocus(MONO_ID);
+ break;
+ case BAYER_MODE:
+ lockFocus(BAYER_ID);
+ break;
+ case MONO_MODE:
+ lockFocus(MONO_ID);
+ break;
+ }
+ } else {
+ lockFocus(FRONT_ID);
}
}
@@ -667,12 +631,8 @@ public class CaptureModule implements CameraModule, PhotoController,
builder.setTag(id);
builder.addTarget(getPreviewSurface(id));
- builder.set(CaptureRequest.CONTROL_MODE, CaptureRequest.CONTROL_MODE_AUTO);
- builder.set(CaptureRequest.CONTROL_AF_MODE, mControlAFMode);
- builder.set(CaptureRequest.CONTROL_AF_TRIGGER, CaptureRequest.CONTROL_AF_TRIGGER_START);
- applyWhiteBalance(builder);
- applyZoom(builder, id);
- applyAFRegions(builder, id);
+ applySettingsForLockFocus(builder, id);
+
mState[id] = STATE_WAITING_LOCK;
mCaptureSession[id].capture(builder.build(), mCaptureCallback, mCameraHandler);
} catch (CameraAccessException e) {
@@ -689,14 +649,8 @@ public class CaptureModule implements CameraModule, PhotoController,
builder.addTarget(getPreviewSurface(id));
mControlAFMode = CaptureRequest.CONTROL_AF_MODE_AUTO;
- builder.set(CaptureRequest.CONTROL_MODE, CaptureRequest.CONTROL_MODE_AUTO);
- builder.set(CaptureRequest.CONTROL_AF_MODE, mControlAFMode);
- builder.set(CaptureRequest.CONTROL_AF_TRIGGER, CaptureRequest
- .CONTROL_AF_TRIGGER_START);
-
- applyWhiteBalance(builder);
- applyZoom(builder, id);
- applyAFRegions(builder, id);
+ applySettingsForAutoFocus(builder, id);
+
mState[id] = STATE_WAITING_TOUCH_FOCUS;
mCaptureSession[id].capture(builder.build(), mCaptureCallback, mCameraHandler);
setAFModeToPreview(id, mControlAFMode);
@@ -740,9 +694,7 @@ public class CaptureModule implements CameraModule, PhotoController,
return;
}
- ListPreference pref = mPreferenceGroup.findPreference(CameraSettings.KEY_CLEARSIGHT);
- final boolean csEnabled = pref.getValue().equals(
- mActivity.getString(R.string.pref_camera_clearsight_value_on));
+ final boolean csEnabled = isClearSightOn();
CaptureRequest.Builder captureBuilder;
if(csEnabled) {
@@ -759,27 +711,28 @@ public class CaptureModule implements CameraModule, PhotoController,
captureBuilder.addTarget(getPreviewSurface(id));
captureBuilder.set(CaptureRequest.CONTROL_AF_MODE, mControlAFMode);
captureBuilder.set(CaptureRequest.CONTROL_AF_TRIGGER, CaptureRequest.CONTROL_AF_TRIGGER_IDLE);
- applyCaptureSettings(captureBuilder, id);
+ applySettingsForCapture(captureBuilder, id);
if(csEnabled) {
ClearSightImageProcessor.getInstance().capture(
id==BAYER_ID, mCaptureSession[id], captureBuilder, mCaptureCallbackHandler);
} else {
captureBuilder.addTarget(mImageReader[id].getSurface());
+ mCaptureSession[id].stopRepeating();
mCaptureSession[id].capture(captureBuilder.build(), new CameraCaptureSession.CaptureCallback() {
@Override
public void onCaptureCompleted(CameraCaptureSession session,
- CaptureRequest request,
- TotalCaptureResult result) {
+ CaptureRequest request,
+ TotalCaptureResult result) {
Log.d(TAG, "captureStillPicture onCaptureCompleted: " + id);
}
@Override
public void onCaptureFailed(CameraCaptureSession session,
- CaptureRequest request,
- CaptureFailure result) {
+ CaptureRequest request,
+ CaptureFailure result) {
Log.d(TAG, "captureStillPicture onCaptureFailed: " + id);
}
@@ -808,14 +761,9 @@ public class CaptureModule implements CameraModule, PhotoController,
.TEMPLATE_PREVIEW);
builder.setTag(id);
builder.addTarget(getPreviewSurface(id));
- builder.set(CaptureRequest.CONTROL_MODE, CaptureRequest.CONTROL_MODE_AUTO);
- builder.set(CaptureRequest.CONTROL_AF_MODE, mControlAFMode);
- builder.set(CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER,
- CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER_START);
- // Applying flash only to capture does not work. Need to apply flash here.
- applyFlash(builder);
- applyWhiteBalance(builder);
- applyZoom(builder, id);
+
+ applySettingsForPrecapture(builder, id);
+
mState[id] = STATE_WAITING_PRECAPTURE;
mCaptureSession[id].capture(builder.build(), mCaptureCallback, mCameraHandler);
} catch (CameraAccessException e) {
@@ -833,24 +781,18 @@ public class CaptureModule implements CameraModule, PhotoController,
CameraManager manager = (CameraManager) mActivity.getSystemService(Context.CAMERA_SERVICE);
try {
String[] cameraIdList = manager.getCameraIdList();
-
for (int i = 0; i < cameraIdList.length; i++) {
String cameraId = cameraIdList[i];
- CameraCharacteristics characteristics
- = manager.getCameraCharacteristics(cameraId);
- mCharacteristics[i] = characteristics;
- mCharacteristicsIndex.add(i);
+ CameraCharacteristics characteristics = manager.getCameraCharacteristics(cameraId);
+ mCameraIdList.add(i);
StreamConfigurationMap map = characteristics.get(
CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
if (map == null) {
continue;
}
- Boolean available = characteristics.get(CameraCharacteristics.FLASH_INFO_AVAILABLE);
- Log.d(TAG, "flash : " + (available == null ? false : available));
mCameraId[i] = cameraId;
- ListPreference pref = mPreferenceGroup.findPreference(CameraSettings.KEY_CLEARSIGHT);
- if(pref.getValue().equals(mActivity.getString(R.string.pref_camera_clearsight_value_on))) {
+ if(isClearSightOn()) {
Size largest = Collections.max(
Arrays.asList(map.getOutputSizes(ImageFormat.YUV_420_888)),
new CompareSizesByArea());
@@ -864,7 +806,12 @@ public class CaptureModule implements CameraModule, PhotoController,
Arrays.asList(map.getOutputSizes(ImageFormat.JPEG)),
new CompareSizesByArea());
- mImageReader[i] = ImageReader.newInstance(largest.getWidth(), largest.getHeight(),
+ String pictureSize = mSettingsManager.getValue(SettingsManager
+ .KEY_PICTURE_SIZE);
+
+ Size size = parsePictureSize(pictureSize);
+
+ mImageReader[i] = ImageReader.newInstance(size.getWidth(), size.getHeight(),
ImageFormat.JPEG, 3);
mImageReader[i].setOnImageAvailableListener(new ImageAvailableListener(i) {
@Override
@@ -889,11 +836,9 @@ public class CaptureModule implements CameraModule, PhotoController,
}, mImageAvailableHandler);
}
}
- mAutoFocusSupported = CameraUtil.isAutoFocusSupported(mCharacteristics,
- mCharacteristicsIndex);
+ mAutoFocusSupported = mSettingsManager.isAutoFocusSupported(mCameraIdList);
} catch (CameraAccessException e) {
e.printStackTrace();
- } catch (NullPointerException e) {
}
}
@@ -909,14 +854,8 @@ public class CaptureModule implements CameraModule, PhotoController,
builder.setTag(id);
builder.addTarget(getPreviewSurface(id));
- builder.set(CaptureRequest.CONTROL_MODE, CaptureRequest
- .CONTROL_MODE_AUTO);
- builder.set(CaptureRequest.CONTROL_AF_MODE, mControlAFMode);
- builder.set(CaptureRequest.CONTROL_AF_TRIGGER,
- CaptureRequest.CONTROL_AF_TRIGGER_CANCEL);
- //Todo: Create applyCommonSettings function for settings applied everytime
- applyWhiteBalance(builder);
- applyZoom(builder, id);
+ applySettingsForUnlockFocus(builder, id);
+
mCaptureSession[id].capture(builder.build(), mCaptureCallback, mCameraHandler);
mState[id] = STATE_PREVIEW;
mControlAFMode = CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE;
@@ -929,6 +868,13 @@ public class CaptureModule implements CameraModule, PhotoController,
}
}
+ private Size parsePictureSize(String value) {
+ int indexX = value.indexOf('x');
+ int width = Integer.parseInt(value.substring(0, indexX));
+ int height = Integer.parseInt(value.substring(indexX + 1));
+ return new Size(width, height);
+ }
+
/**
* Closes the current {@link CameraDevice}.
*/
@@ -977,6 +923,48 @@ public class CaptureModule implements CameraModule, PhotoController,
}
}
+ private void applySettingsForLockFocus(CaptureRequest.Builder builder, int id) {
+ builder.set(CaptureRequest.CONTROL_AF_TRIGGER, CaptureRequest.CONTROL_AF_TRIGGER_START);
+ applyAFRegions(builder, id);
+ applyCommonSettings(builder, id);
+ }
+
+ private void applySettingsForCapture(CaptureRequest.Builder builder, int id) {
+ builder.set(CaptureRequest.CONTROL_AF_TRIGGER, CaptureRequest.CONTROL_AF_TRIGGER_IDLE);
+ applyFlash(builder, id);
+ applyJpegQuality(builder);
+ applyCommonSettings(builder, id);
+ }
+
+ private void applySettingsForPrecapture(CaptureRequest.Builder builder, int id) {
+ builder.set(CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER,
+ CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER_START);
+ applyFlash(builder, id);
+ applyCommonSettings(builder, id);
+ }
+
+ private void applySettingsForUnlockFocus(CaptureRequest.Builder builder, int id) {
+ builder.set(CaptureRequest.CONTROL_AF_TRIGGER,
+ CaptureRequest.CONTROL_AF_TRIGGER_CANCEL);
+ applyCommonSettings(builder, id);
+ }
+
+ private void applySettingsForAutoFocus(CaptureRequest.Builder builder, int id) {
+ builder.set(CaptureRequest.CONTROL_AF_TRIGGER, CaptureRequest
+ .CONTROL_AF_TRIGGER_START);
+ applyAFRegions(builder, id);
+ applyCommonSettings(builder, id);
+ }
+
+ private void applyCommonSettings(CaptureRequest.Builder builder, int id) {
+ builder.set(CaptureRequest.CONTROL_MODE, CaptureRequest.CONTROL_MODE_AUTO);
+ builder.set(CaptureRequest.CONTROL_AF_MODE, mControlAFMode);
+ applyWhiteBalance(builder);
+ applyColorEffect(builder);
+ applySceneMode(builder);
+ applyZoom(builder, id);
+ }
+
/**
* Starts a background thread and its {@link Handler}.
*/
@@ -1060,8 +1048,7 @@ public class CaptureModule implements CameraModule, PhotoController,
Log.d(TAG, "onPause");
mUI.showPreviewCover();
if (mLocationManager != null) mLocationManager.recordLocation(false);
- ListPreference pref = mPreferenceGroup.findPreference(CameraSettings.KEY_CLEARSIGHT);
- if(pref.getValue().equals(mActivity.getString(R.string.pref_camera_clearsight_value_on))) {
+ if(isClearSightOn()) {
ClearSightImageProcessor.getInstance().close();
}
closeCamera();
@@ -1076,24 +1063,29 @@ public class CaptureModule implements CameraModule, PhotoController,
@Override
public void onResumeAfterSuper() {
- Log.d(TAG, "onResume " + MODE);
- mCharacteristicsIndex = new ArrayList<>();
- startBackgroundThread();
+ Log.d(TAG, "onResume " + getMode());
+ mUI.setSwitcherIndex();
+ mCameraIdList = new ArrayList<>();
setUpCameraOutputs();
- readInitialValues();
+ startBackgroundThread();
Message msg = Message.obtain();
msg.what = OPEN_CAMERA;
- switch (MODE) {
- case DUAL_MODE:
- case BAYER_MODE:
- msg.obj = BAYER_ID;
- mCameraHandler.sendMessage(msg);
- break;
- case MONO_MODE:
- msg.what = OPEN_CAMERA;
- msg.obj = MONO_ID;
- mCameraHandler.sendMessage(msg);
- break;
+ if (isBackMode()) {
+ switch (getMode()) {
+ case DUAL_MODE:
+ case BAYER_MODE:
+ msg.obj = BAYER_ID;
+ mCameraHandler.sendMessage(msg);
+ break;
+ case MONO_MODE:
+ msg.what = OPEN_CAMERA;
+ msg.obj = MONO_ID;
+ mCameraHandler.sendMessage(msg);
+ break;
+ }
+ } else {
+ msg.obj = FRONT_ID;
+ mCameraHandler.sendMessage(msg);
}
if (!mFirstTimeInitialized) {
initializeFirstTime();
@@ -1148,17 +1140,21 @@ public class CaptureModule implements CameraModule, PhotoController,
public void onZoomChanged(float requestedZoom) {
mZoomValue = requestedZoom;
- switch (MODE) {
- case DUAL_MODE:
- applyZoomAndUpdate(BAYER_ID);
- applyZoomAndUpdate(MONO_ID);
- break;
- case BAYER_MODE:
- applyZoomAndUpdate(BAYER_ID);
- break;
- case MONO_MODE:
- applyZoomAndUpdate(MONO_ID);
- break;
+ if (isBackMode()) {
+ switch (getMode()) {
+ case DUAL_MODE:
+ applyZoomAndUpdate(BAYER_ID);
+ applyZoomAndUpdate(MONO_ID);
+ break;
+ case BAYER_MODE:
+ applyZoomAndUpdate(BAYER_ID);
+ break;
+ case MONO_MODE:
+ applyZoomAndUpdate(MONO_ID);
+ break;
+ }
+ } else {
+ applyZoomAndUpdate(FRONT_ID);
}
}
@@ -1211,29 +1207,37 @@ public class CaptureModule implements CameraModule, PhotoController,
Log.d(TAG, "onSingleTapUp " + x + " " + y);
mUI.setFocusPosition(x, y);
mUI.onFocusStarted();
- switch (MODE) {
- case DUAL_MODE:
- triggerFocusAtPoint(x, y, BAYER_ID);
- triggerFocusAtPoint(x, y, MONO_ID);
- break;
- case BAYER_MODE:
- triggerFocusAtPoint(x, y, BAYER_ID);
- break;
- case MONO_MODE:
- triggerFocusAtPoint(x, y, MONO_ID);
- break;
+ if (isBackMode()) {
+ switch (getMode()) {
+ case DUAL_MODE:
+ triggerFocusAtPoint(x, y, BAYER_ID);
+ triggerFocusAtPoint(x, y, MONO_ID);
+ break;
+ case BAYER_MODE:
+ triggerFocusAtPoint(x, y, BAYER_ID);
+ break;
+ case MONO_MODE:
+ triggerFocusAtPoint(x, y, MONO_ID);
+ break;
+ }
+ } else {
+ triggerFocusAtPoint(x, y, FRONT_ID);
}
}
private int getMainCameraId() {
- switch (MODE) {
- case DUAL_MODE:
- case BAYER_MODE:
- return BAYER_ID;
- case MONO_MODE:
- return MONO_ID;
+ if (isBackMode()) {
+ switch (getMode()) {
+ case DUAL_MODE:
+ case BAYER_MODE:
+ return BAYER_ID;
+ case MONO_MODE:
+ return MONO_ID;
+ }
+ return 0;
+ } else {
+ return FRONT_ID;
}
- return 0;
}
private boolean isTouchToFocusAllowed() {
@@ -1265,16 +1269,7 @@ public class CaptureModule implements CameraModule, PhotoController,
@Override
public void enableRecordingLocation(boolean enable) {
- Log.d(TAG, "CaptureModule enableRecordingLocation " + enable);
- setLocationPreference(enable ? RecordLocationPreference.VALUE_ON
- : RecordLocationPreference.VALUE_OFF);
- }
- private void setLocationPreference(String value) {
- mPreferences.edit()
- .putString(CameraSettings.KEY_RECORD_LOCATION, value)
- .apply();
- prefListener.onSharedPreferenceChanged();
}
@Override
@@ -1284,17 +1279,21 @@ public class CaptureModule implements CameraModule, PhotoController,
}
Log.d(TAG, "onPreviewUIReady");
mSurfaceReady = true;
- switch (MODE) {
- case DUAL_MODE:
- createSession(BAYER_ID);
- createSession(MONO_ID);
- break;
- case BAYER_MODE:
- createSession(BAYER_ID);
- break;
- case MONO_MODE:
- createSession(MONO_ID);
- break;
+ if (isBackMode()) {
+ switch (getMode()) {
+ case DUAL_MODE:
+ createSession(BAYER_ID);
+ createSession(MONO_ID);
+ break;
+ case BAYER_MODE:
+ createSession(BAYER_ID);
+ break;
+ case MONO_MODE:
+ createSession(MONO_ID);
+ break;
+ }
+ } else {
+ createSession(FRONT_ID);
}
}
@@ -1332,6 +1331,7 @@ public class CaptureModule implements CameraModule, PhotoController,
int oldOrientation = mOrientation;
mOrientation = CameraUtil.roundOrientation(orientation, mOrientation);
if (oldOrientation != mOrientation) {
+ mUI.onOrientationChanged();
mUI.setOrientation(mOrientation, true);
}
}
@@ -1345,8 +1345,7 @@ public class CaptureModule implements CameraModule, PhotoController,
public void onMediaSaveServiceConnected(MediaSaveService s) {
if (mFirstTimeInitialized) {
s.setListener(this);
- ListPreference pref = mPreferenceGroup.findPreference(CameraSettings.KEY_CLEARSIGHT);
- if(pref.getValue().equals(mActivity.getString(R.string.pref_camera_clearsight_value_on))) {
+ if (isClearSightOn()) {
ClearSightImageProcessor.getInstance().setMediaSaveService(s);
}
}
@@ -1364,13 +1363,7 @@ public class CaptureModule implements CameraModule, PhotoController,
@Override
public void onSwitchSavePath() {
- if (mUI.mMenuInitialized) {
- mUI.setPreference(CameraSettings.KEY_CAMERA_SAVEPATH, "1");
- } else {
- mPreferences.edit()
- .putString(CameraSettings.KEY_CAMERA_SAVEPATH, "1")
- .apply();
- }
+ mSettingsManager.setValue(SettingsManager.KEY_CAMERA_SAVEPATH, "1");
RotateTextToast.makeText(mActivity, R.string.on_switch_save_path_to_sdcard,
Toast.LENGTH_SHORT).show();
}
@@ -1390,39 +1383,24 @@ public class CaptureModule implements CameraModule, PhotoController,
}
- private boolean isFlashOff() {
- return readSetting(CameraSettings.KEY_FLASH_MODE).equals("off");
+ private boolean isFlashOff(int id) {
+ if (!mSettingsManager.isFlashSupported(id)) return true;
+ return mSettingsManager.getValue(SettingsManager.KEY_FLASH_MODE).equals("off");
}
private void initializePreviewConfiguration(int id) {
- mPreviewRequestBuilder[id].set(CaptureRequest.CONTROL_MODE, CaptureRequest
- .CONTROL_MODE_AUTO);
- mPreviewRequestBuilder[id].set(CaptureRequest.CONTROL_AF_MODE, CaptureRequest
- .CONTROL_AF_MODE_CONTINUOUS_PICTURE);
mPreviewRequestBuilder[id].set(CaptureRequest.CONTROL_AF_TRIGGER, CaptureRequest
.CONTROL_AF_TRIGGER_IDLE);
mPreviewRequestBuilder[id].set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest
.CONTROL_AE_MODE_ON);
mPreviewRequestBuilder[id].set(CaptureRequest.FLASH_MODE, CaptureRequest
.FLASH_MODE_OFF);
- applyWhiteBalance(mPreviewRequestBuilder[id]);
- applyZoom(mPreviewRequestBuilder[id], id);
- }
-
- private void readInitialValues() {
- for (int i = 0; i < mPreferenceGroup.size(); i++) {
- CameraPreference pref = mPreferenceGroup.get(i);
- if (pref instanceof ListPreference) {
- ListPreference listPref = (ListPreference) pref;
- storeSetting(listPref.getKey(), listPref.getValue());
- }
- }
+ applyCommonSettings(mPreviewRequestBuilder[id], id);
}
public Rect cropRegionForZoom(int id) {
Log.d(TAG, "cropRegionForZoom " + id);
- Rect activeRegion = mCharacteristics[id].get(CameraCharacteristics
- .SENSOR_INFO_ACTIVE_ARRAY_SIZE);
+ Rect activeRegion = mSettingsManager.getSensorActiveArraySize(id);
Rect cropRegion = new Rect();
int xCenter = activeRegion.width() / 2;
@@ -1438,36 +1416,23 @@ public class CaptureModule implements CameraModule, PhotoController,
request.set(CaptureRequest.SCALER_CROP_REGION, cropRegionForZoom(id));
}
- private void applyCaptureSettings(CaptureRequest.Builder request, int id) {
- applyFlash(request);
- applyWhiteBalance(request);
- applyJpegQuality(request);
- applyZoom(request, id);
- }
-
- private void applyPreference(int cameraId, ListPreference pref) {
+ private boolean applyPreferenceToPreview(int cameraId, String key, String value) {
boolean updatePreview = false;
- String key = pref.getKey();
- String value = pref.getValue();
- storeSetting(key, value);
switch (key) {
- //Todo: CreateUISettings file and add UI preference settings to there
- case CameraSettings.KEY_JPEG_QUALITY:
- mJpegQuality = getQualityNumber(value);
- break;
- case CameraSettings.KEY_WHITE_BALANCE:
+ case SettingsManager.KEY_WHITE_BALANCE:
updatePreview = true;
applyWhiteBalance(mPreviewRequestBuilder[cameraId]);
break;
+ case SettingsManager.KEY_COLOR_EFFECT:
+ updatePreview = true;
+ applyColorEffect(mPreviewRequestBuilder[cameraId]);
+ break;
+ case SettingsManager.KEY_SCENE_MODE:
+ updatePreview = true;
+ applySceneMode(mPreviewRequestBuilder[cameraId]);
+ break;
}
- if (updatePreview) {
- try {
- mCaptureSession[cameraId].setRepeatingRequest(mPreviewRequestBuilder[cameraId]
- .build(), mCaptureCallback, mCameraHandler);
- } catch (CameraAccessException e) {
- e.printStackTrace();
- }
- }
+ return updatePreview;
}
private void applyZoomAndUpdate(int id) {
@@ -1480,14 +1445,6 @@ public class CaptureModule implements CameraModule, PhotoController,
}
}
- private void storeSetting(String key, String value) {
- mSettings.put(key, value);
- }
-
- private String readSetting(String key) {
- return mSettings.get(key);
- }
-
private void applyJpegQuality(CaptureRequest.Builder request) {
request.set(CaptureRequest.JPEG_QUALITY, (byte) mJpegQuality);
}
@@ -1500,64 +1457,73 @@ public class CaptureModule implements CameraModule, PhotoController,
}
}
- private void applyWhiteBalance(CaptureRequest.Builder request) {
- String value = readSetting(CameraSettings.KEY_WHITE_BALANCE);
- switch (value) {
- case "incandescent":
- request.set(CaptureRequest.CONTROL_AWB_MODE, CaptureRequest
- .CONTROL_AWB_MODE_INCANDESCENT);
- break;
- case "fluorescent":
- request.set(CaptureRequest.CONTROL_AWB_MODE, CaptureRequest
- .CONTROL_AWB_MODE_FLUORESCENT);
- break;
- case "auto":
- request.set(CaptureRequest.CONTROL_AWB_MODE, CaptureRequest
- .CONTROL_AWB_MODE_AUTO);
- break;
- case "daylight":
- request.set(CaptureRequest.CONTROL_AWB_MODE, CaptureRequest
- .CONTROL_AWB_MODE_DAYLIGHT);
- break;
- case "cloudy-daylight":
- request.set(CaptureRequest.CONTROL_AWB_MODE, CaptureRequest
- .CONTROL_AWB_MODE_CLOUDY_DAYLIGHT);
- break;
+ private void applySceneMode(CaptureRequest.Builder request) {
+ String value = mSettingsManager.getValue(SettingsManager.KEY_SCENE_MODE);
+ if (value == null) return;
+ int mode = Integer.parseInt(value);
+ if (mode != CaptureRequest.CONTROL_SCENE_MODE_DISABLED) {
+ request.set(CaptureRequest.CONTROL_SCENE_MODE, mode);
+ request.set(CaptureRequest.CONTROL_MODE, CaptureRequest.CONTROL_MODE_USE_SCENE_MODE);
+ } else {
+ request.set(CaptureRequest.CONTROL_MODE, CaptureRequest.CONTROL_MODE_AUTO);
}
}
- private Surface getPreviewSurface(int id) {
- if (MODE == DUAL_MODE && id == MONO_ID) {
- return mUI.getSurfaceHolder2().getSurface();
- } else {
- return mUI.getSurfaceHolder().getSurface();
- }
+ private void applyColorEffect(CaptureRequest.Builder request) {
+ String value = mSettingsManager.getValue(SettingsManager.KEY_COLOR_EFFECT);
+ if (value == null) return;
+ int mode = Integer.parseInt(value);
+ request.set(CaptureRequest.CONTROL_EFFECT_MODE, mode);
+ }
+
+ private void applyWhiteBalance(CaptureRequest.Builder request) {
+ String value = mSettingsManager.getValue(SettingsManager.KEY_WHITE_BALANCE);
+ if (value == null) return;
+ int mode = Integer.parseInt(value);
+ request.set(CaptureRequest.CONTROL_AWB_MODE, mode);
}
private void applyFlash(CaptureRequest.Builder request, String value) {
- switch (value) {
- case "on":
- request.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest
- .CONTROL_AE_MODE_ON_ALWAYS_FLASH);
+ int mode = Integer.parseInt(value);
+ String redeye = mSettingsManager.getValue(SettingsManager.KEY_REDEYE_REDUCTION);
+ request.set(CaptureRequest.CONTROL_AE_MODE, mode);
+ switch (mode) {
+ case 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);
- break;
- case "off":
- request.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest
- .CONTROL_AE_MODE_ON);
+ case CaptureRequest.CONTROL_AE_MODE_ON:
request.set(CaptureRequest.FLASH_MODE, CaptureRequest
.FLASH_MODE_OFF);
break;
+ case CaptureRequest.CONTROL_AE_MODE_ON_AUTO_FLASH:
+ if (redeye.equals("disable")) {
+ request.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest
+ .CONTROL_AE_MODE_ON_AUTO_FLASH_REDEYE);
+ }
+ break;
}
}
- private void applyFlash(CaptureRequest.Builder request) {
- String value = readSetting(CameraSettings.KEY_FLASH_MODE);
- applyFlash(request, value);
+ private void applyFlash(CaptureRequest.Builder request, int id) {
+ if (mSettingsManager.isFlashSupported(id)) {
+ String value = mSettingsManager.getValue(SettingsManager.KEY_FLASH_MODE);
+ applyFlash(request, value);
+ } else {
+ request.set(CaptureRequest.FLASH_MODE, CaptureRequest.FLASH_MODE_OFF);
+ }
+ }
+
+ private Surface getPreviewSurface(int id) {
+ if (isBackMode()) {
+ if (getMode() == DUAL_MODE && id == MONO_ID) {
+ return mUI.getSurfaceHolder2().getSurface();
+ } else {
+ return mUI.getSurfaceHolder().getSurface();
+ }
+ } else {
+ return mUI.getSurfaceHolder().getSurface();
+ }
}
@Override
@@ -1622,6 +1588,75 @@ public class CaptureModule implements CameraModule, PhotoController,
mLastResultAFState = resultAFState;
}
+ @Override
+ public void onSettingsChanged(List<SettingsManager.SettingState> settings) {
+ if (mPaused) return;
+ boolean updatePreviewBayer = false;
+ boolean updatePreviewMono = false;
+ boolean updatePreviewFront = false;
+ for (SettingsManager.SettingState settingState : settings) {
+
+ String key = settingState.key;
+ SettingsManager.Values values = settingState.values;
+ String value;
+ if (values.overriddenValue != null) {
+ value = values.overriddenValue;
+ } else {
+ value = values.value;
+ }
+ if (SettingsManager.KEY_CAMERA_SAVEPATH.equals(key)) {
+ Storage.setSaveSDCard(value.equals("1"));
+ mActivity.updateStorageSpaceAndHint();
+ continue;
+ }
+ if (SettingsManager.KEY_JPEG_QUALITY.equals(key)) {
+ mJpegQuality = getQualityNumber(value);
+ continue;
+ }
+
+ if (isBackMode()) {
+ switch (getMode()) {
+ case BAYER_MODE:
+ updatePreviewBayer |= applyPreferenceToPreview(BAYER_ID, key, value);
+ break;
+ case MONO_MODE:
+ updatePreviewMono |= applyPreferenceToPreview(MONO_ID, key, value);
+ break;
+ case DUAL_MODE:
+ updatePreviewBayer |= applyPreferenceToPreview(BAYER_ID, key, value);
+ updatePreviewMono |= applyPreferenceToPreview(MONO_ID, key, value);
+ break;
+ }
+ } else {
+ updatePreviewFront |= applyPreferenceToPreview(FRONT_ID, key, value);
+ }
+ }
+ if (updatePreviewBayer) {
+ try {
+ mCaptureSession[BAYER_ID].setRepeatingRequest(mPreviewRequestBuilder[BAYER_ID]
+ .build(), mCaptureCallback, mCameraHandler);
+ } catch (CameraAccessException e) {
+ e.printStackTrace();
+ }
+ }
+ if (updatePreviewMono) {
+ try {
+ mCaptureSession[MONO_ID].setRepeatingRequest(mPreviewRequestBuilder[MONO_ID]
+ .build(), mCaptureCallback, mCameraHandler);
+ } catch (CameraAccessException e) {
+ e.printStackTrace();
+ }
+ }
+ if (updatePreviewFront) {
+ try {
+ mCaptureSession[FRONT_ID].setRepeatingRequest(mPreviewRequestBuilder[FRONT_ID]
+ .build(), mCaptureCallback, mCameraHandler);
+ } catch (CameraAccessException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
/**
* Compares two {@code Size}s based on their areas.
*/