Migrate to use new CameraSettings.
Totally get rid of Camera.Parameters.
Change-Id: I147b88f77ecab52600088a10417c3eac3d7fd340
diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java
index 891441d..037aae4 100644
--- a/src/com/android/camera/PhotoModule.java
+++ b/src/com/android/camera/PhotoModule.java
@@ -25,7 +25,6 @@
import android.graphics.BitmapFactory;
import android.graphics.SurfaceTexture;
import android.hardware.Camera.CameraInfo;
-import android.hardware.Camera.Parameters;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
@@ -52,7 +51,6 @@
import com.android.camera.app.AppController;
import com.android.camera.app.CameraAppUI;
import com.android.camera.app.CameraProvider;
-import com.android.camera.app.LocationManager;
import com.android.camera.app.MediaSaver;
import com.android.camera.app.MemoryManager;
import com.android.camera.app.MemoryManager.MemoryListener;
@@ -79,7 +77,6 @@
import com.android.camera.widget.AspectRatioSelector;
import com.android.camera2.R;
import com.android.ex.camera2.portability.CameraCapabilities;
-import com.android.ex.camera2.portability.CameraAgent;
import com.android.ex.camera2.portability.CameraAgent.CameraAFCallback;
import com.android.ex.camera2.portability.CameraAgent.CameraAFMoveCallback;
import com.android.ex.camera2.portability.CameraAgent.CameraPictureCallback;
@@ -96,7 +93,7 @@
import java.io.IOException;
import java.io.OutputStream;
import java.lang.ref.WeakReference;
-import java.text.DecimalFormat;
+import java.util.ArrayList;
import java.util.List;
import java.util.Vector;
@@ -134,8 +131,6 @@
private static final String DEBUG_IMAGE_PREFIX = "DEBUG_";
- private static DecimalFormat sMegaPixelFormat = new DecimalFormat("##0.0");
-
private CameraActivity mActivity;
private CameraProxy mCameraDevice;
private int mCameraId;
@@ -154,12 +149,9 @@
// needed to be updated in mUpdateSet.
private int mUpdateSet;
- private static final int SCREEN_DELAY = 2 * 60 * 1000;
-
private int mZoomValue; // The current zoom value.
private int mTimerDuration;
- private Parameters mInitialParams;
private boolean mFocusAreaSupported;
private boolean mMeteringAreaSupported;
private boolean mAeLockSupported;
@@ -204,7 +196,7 @@
private int mCameraDisplayOrientation;
// The value for UI components like indicators.
private int mDisplayOrientation;
- // The value for android.hardware.Camera.Parameters.setRotation.
+ // The value for cameradevice.CameraSettings.setPhotoRotationDegrees.
private int mJpegRotation;
// Indicates whether we are using front camera
private boolean mMirror;
@@ -216,7 +208,6 @@
private ContentResolver mContentResolver;
- private LocationManager mLocationManager;
private AppController mAppController;
private final PostViewPictureCallback mPostViewPictureCallback =
@@ -450,7 +441,6 @@
mActivity.getCameraProvider().requestCamera(mCameraId);
mQuickCapture = mActivity.getIntent().getBooleanExtra(EXTRA_QUICK_CAPTURE, false);
- mLocationManager = mActivity.getLocationManager();
mSensorManager = (SensorManager) (mActivity.getSystemService(Context.SENSOR_SERVICE));
mUI.setCountdownFinishedListener(this);
@@ -714,11 +704,13 @@
switchToGcamCapture();
} else {
if (Keys.isHdrOn(settingsManager)) {
- settingsManager.set(mAppController.getCameraScope(),
- Keys.KEY_SCENE_MODE, CameraUtil.SCENE_MODE_HDR);
+ settingsManager.set(mAppController.getCameraScope(), Keys.KEY_SCENE_MODE,
+ mCameraCapabilities.getStringifier().stringify(
+ CameraCapabilities.SceneMode.HDR));
} else {
- settingsManager.set(mAppController.getCameraScope(),
- Keys.KEY_SCENE_MODE, Parameters.SCENE_MODE_AUTO);
+ settingsManager.set(mAppController.getCameraScope(), Keys.KEY_SCENE_MODE,
+ mCameraCapabilities.getStringifier().stringify(
+ CameraCapabilities.SceneMode.AUTO));
}
updateParametersSceneMode();
mCameraDevice.applySettings(mCameraSettings);
@@ -757,7 +749,8 @@
@Override
public HardwareSpec getHardwareSpec() {
- return (mCameraSettings != null ? new HardwareSpecImpl(mCameraCapabilities) : null);
+ return (mCameraSettings != null ?
+ new HardwareSpecImpl(getCameraProvider(), mCameraCapabilities) : null);
}
@Override
@@ -1355,7 +1348,7 @@
if (mFocusManager == null) {
initializeFocusManager();
}
- mFocusManager.setParameters(mInitialParams, mCameraCapabilities);
+ mFocusManager.updateCapabilities(mCameraCapabilities);
// Do camera parameter dependent initialization.
mCameraSettings = mCameraDevice.getSettings();
@@ -1521,7 +1514,7 @@
}
mSnapshotOnIdle = false;
- mFocusManager.focusAndCapture();
+ mFocusManager.focusAndCapture(mCameraSettings.getCurrentFocusMode());
}
@Override
@@ -1596,12 +1589,20 @@
mFocusManager.removeMessages();
} else {
mMirror = isCameraFrontFacing();
- String[] defaultFocusModes = mActivity.getResources().getStringArray(
+ String[] defaultFocusModesStrings = mActivity.getResources().getStringArray(
R.array.pref_camera_focusmode_default_array);
- mFocusManager = new FocusOverlayManager(mAppController,
- defaultFocusModes,
- mInitialParams, this, mMirror,
- mActivity.getMainLooper(), mUI.getFocusUI());
+ ArrayList<CameraCapabilities.FocusMode> defaultFocusModes = new ArrayList<>();
+ CameraCapabilities.Stringifier stringifier = mCameraCapabilities.getStringifier();
+ for (String modeString : defaultFocusModesStrings) {
+ CameraCapabilities.FocusMode mode = stringifier.focusModeFromString(modeString);
+ if (mode != null) {
+ defaultFocusModes.add(mode);
+ }
+ }
+ mFocusManager =
+ new FocusOverlayManager(mAppController, defaultFocusModes,
+ mCameraCapabilities, this, mMirror, mActivity.getMainLooper(),
+ mUI.getFocusUI());
MotionManager motionManager = getServices().getMotionManager();
if (motionManager != null) {
motionManager.addListener(mFocusManager);
@@ -1880,8 +1881,8 @@
if (!mSnapshotOnIdle) {
// If the focus mode is continuous autofocus, call cancelAutoFocus
// to resume it because it may have been paused by autoFocus call.
- String focusMode = mFocusManager.getFocusMode();
- if (CameraUtil.FOCUS_MODE_CONTINUOUS_PICTURE.equals(focusMode)) {
+ if (mFocusManager.getFocusMode(mCameraSettings.getCurrentFocusMode()) ==
+ CameraCapabilities.FocusMode.CONTINUOUS_PICTURE) {
mCameraDevice.cancelAutoFocus();
}
mFocusManager.setAeAwbLock(false); // Unlock AE and AWB.
@@ -1948,12 +1949,10 @@
// video camera application.
int[] fpsRange = CameraUtil.getPhotoPreviewFpsRange(mCameraCapabilities);
if (fpsRange != null && fpsRange.length > 0) {
- mCameraSettings.setPreviewFpsRange(
- fpsRange[Parameters.PREVIEW_FPS_MIN_INDEX],
- fpsRange[Parameters.PREVIEW_FPS_MAX_INDEX]);
+ mCameraSettings.setPreviewFpsRange(fpsRange[0], fpsRange[1]);
}
- mCameraSettings.setSetting(CameraUtil.RECORDING_HINT, CameraUtil.FALSE);
+ mCameraSettings.setRecordingHintEnabled(false);
if (mCameraCapabilities.supports(CameraCapabilities.Feature.VIDEO_STABILIZATION)) {
mCameraSettings.setVideoStabilization(false);
@@ -2001,10 +2000,12 @@
// Initialize focus mode.
mFocusManager.overrideFocusMode(null);
- mCameraSettings.setFocusMode(mCameraCapabilities.getStringifier()
- .focusModeFromString(mFocusManager.getFocusMode()));
+ mCameraSettings
+ .setFocusMode(mFocusManager.getFocusMode(mCameraSettings.getCurrentFocusMode()));
SessionStatsCollector.instance().autofocusActive(
- mFocusManager.getFocusMode() == CameraUtil.FOCUS_MODE_CONTINUOUS_PICTURE);
+ mFocusManager.getFocusMode(mCameraSettings.getCurrentFocusMode()) ==
+ CameraCapabilities.FocusMode.CONTINUOUS_PICTURE
+ );
// Set picture size.
updateParametersPictureSize();
@@ -2132,11 +2133,10 @@
// Set focus mode.
mFocusManager.overrideFocusMode(null);
- mCameraSettings.setFocusMode(mCameraCapabilities.getStringifier()
- .focusModeFromString(mFocusManager.getFocusMode()));
+ mCameraSettings.setFocusMode(
+ mFocusManager.getFocusMode(mCameraSettings.getCurrentFocusMode()));
} else {
- mFocusManager.overrideFocusMode(mCameraCapabilities.getStringifier()
- .stringify(mCameraSettings.getCurrentFocusMode()));
+ mFocusManager.overrideFocusMode(mCameraSettings.getCurrentFocusMode());
}
}
@@ -2243,7 +2243,6 @@
}
private void initializeCapabilities() {
- mInitialParams = mCameraDevice.getParameters();
mCameraCapabilities = mCameraDevice.getCapabilities();
mFocusAreaSupported = mCameraCapabilities.supports(CameraCapabilities.Feature.FOCUS_AREA);
mMeteringAreaSupported = mCameraCapabilities.supports(CameraCapabilities.Feature.METERING_AREA);
@@ -2267,9 +2266,9 @@
// Set zoom parameters asynchronously
mCameraSettings.setZoomRatio((float) mZoomValue);
mCameraDevice.applySettings(mCameraSettings);
- Parameters p = mCameraDevice.getParameters();
- if (p != null) {
- return p.getZoom();
+ CameraSettings settings = mCameraDevice.getSettings();
+ if (settings != null) {
+ return settings.getCurrentZoomIndex();
}
return index;
}