summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSol Boucher <solb@google.com>2014-06-19 14:54:49 -0700
committerSol Boucher <solb@google.com>2014-06-20 14:25:04 -0700
commitb30d2c670f1262f0d60181e40dad33f2151fee4a (patch)
tree7d82b5cd401ec0f956294a9b508618b356b70edd
parent01e7c02174ef268b6d6daaa5a5bb4f752d55964c (diff)
downloadandroid_frameworks_ex-b30d2c670f1262f0d60181e40dad33f2151fee4a.tar.gz
android_frameworks_ex-b30d2c670f1262f0d60181e40dad33f2151fee4a.tar.bz2
android_frameworks_ex-b30d2c670f1262f0d60181e40dad33f2151fee4a.zip
camera2-portability: Remove Camera.CameraInfo accessor
This removes the CameraDevice#getCameraInfos() call that provided direct access to this API 1 type, replacing it with another accessor returning individual instances of the new wrapper type CameraDevice.BasicCharacteristics . It also gives CameraProxy a method for getting instances of this wrapper. Change-Id: I0c72ffe71817b8acf1cc5a01f1565ec4e0e97e7d
-rw-r--r--camera2/portability/src/com/android/ex/camera2/portability/AndroidCameraAgentImpl.java55
-rw-r--r--camera2/portability/src/com/android/ex/camera2/portability/CameraAgent.java5
-rw-r--r--camera2/portability/src/com/android/ex/camera2/portability/CameraDeviceInfo.java36
3 files changed, 86 insertions, 10 deletions
diff --git a/camera2/portability/src/com/android/ex/camera2/portability/AndroidCameraAgentImpl.java b/camera2/portability/src/com/android/ex/camera2/portability/AndroidCameraAgentImpl.java
index 0cd8ede..7388519 100644
--- a/camera2/portability/src/com/android/ex/camera2/portability/AndroidCameraAgentImpl.java
+++ b/camera2/portability/src/com/android/ex/camera2/portability/AndroidCameraAgentImpl.java
@@ -48,6 +48,7 @@ class AndroidCameraAgentImpl implements CameraAgent {
private Parameters mParameters;
private boolean mParametersIsDirty;
+ private CameraDeviceInfo.Characteristics mCharacteristics;
private AndroidCameraCapabilities mCapabilities;
private final CameraHandler mCameraHandler;
@@ -140,8 +141,13 @@ class AndroidCameraAgentImpl implements CameraAgent {
}
@Override
- public Camera.CameraInfo[] getCameraInfos() {
- return mCameraInfos;
+ public Characteristics getCharacteristics(int cameraId) {
+ Camera.CameraInfo info = mCameraInfos[cameraId];
+ if (info != null) {
+ return new AndroidCharacteristics(info);
+ } else {
+ return null;
+ }
}
@Override
@@ -158,6 +164,34 @@ class AndroidCameraAgentImpl implements CameraAgent {
public int getFirstFrontCameraId() {
return mFirstFrontCameraId;
}
+
+ private static class AndroidCharacteristics implements Characteristics {
+ private Camera.CameraInfo mCameraInfo;
+
+ AndroidCharacteristics(Camera.CameraInfo cameraInfo) {
+ mCameraInfo = cameraInfo;
+ }
+
+ @Override
+ public boolean isFacingBack() {
+ return mCameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_BACK;
+ }
+
+ @Override
+ public boolean isFacingFront() {
+ return mCameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT;
+ }
+
+ @Override
+ public int getSensorOrientation() {
+ return mCameraInfo.orientation;
+ }
+
+ @Override
+ public boolean canDisableShutterSound() {
+ return mCameraInfo.canDisableShutterSound;
+ }
+ }
}
/**
@@ -265,15 +299,17 @@ class AndroidCameraAgentImpl implements CameraAgent {
mCameraId = cameraId;
mParametersIsDirty = true;
- // Get a instance of Camera.Parameters for later use.
+ // Get an instance of Camera.Parameters for later use.
mParamsToSet = mCamera.getParameters();
+ mCharacteristics =
+ AndroidCameraDeviceInfo.create().getCharacteristics(cameraId);
mCapabilities = new AndroidCameraCapabilities(mParamsToSet);
mCameraState.setState(CameraStateHolder.CAMERA_IDLE);
if (openCallback != null) {
openCallback.onCameraOpened(
new AndroidCameraProxyImpl(cameraId, mCamera,
- mCapabilities));
+ mCharacteristics, mCapabilities));
}
} else {
if (openCallback != null) {
@@ -311,7 +347,8 @@ class AndroidCameraAgentImpl implements CameraAgent {
mCameraState.setState(CameraStateHolder.CAMERA_IDLE);
if (cbForward != null) {
cbForward.onCameraOpened(
- new AndroidCameraProxyImpl(cameraId, mCamera, mCapabilities));
+ new AndroidCameraProxyImpl(cameraId, mCamera, mCharacteristics,
+ mCapabilities));
}
break;
}
@@ -614,12 +651,15 @@ class AndroidCameraAgentImpl implements CameraAgent {
private final int mCameraId;
/* TODO: remove this Camera instance. */
private final Camera mCamera;
+ private final CameraDeviceInfo.Characteristics mCharacteristics;
private final AndroidCameraCapabilities mCapabilities;
private AndroidCameraProxyImpl(int cameraId, Camera camera,
+ CameraDeviceInfo.Characteristics characteristics,
AndroidCameraCapabilities capabilities) {
mCamera = camera;
mCameraId = cameraId;
+ mCharacteristics = characteristics;
mCapabilities = capabilities;
}
@@ -634,6 +674,11 @@ class AndroidCameraAgentImpl implements CameraAgent {
}
@Override
+ public CameraDeviceInfo.Characteristics getCharacteristics() {
+ return mCharacteristics;
+ }
+
+ @Override
public CameraCapabilities getCapabilities() {
return new AndroidCameraCapabilities(mCapabilities);
}
diff --git a/camera2/portability/src/com/android/ex/camera2/portability/CameraAgent.java b/camera2/portability/src/com/android/ex/camera2/portability/CameraAgent.java
index db3b1d7..9c3c400 100644
--- a/camera2/portability/src/com/android/ex/camera2/portability/CameraAgent.java
+++ b/camera2/portability/src/com/android/ex/camera2/portability/CameraAgent.java
@@ -343,6 +343,11 @@ public interface CameraAgent {
public int getCameraId();
/**
+ * @return The camera characteristics.
+ */
+ public CameraDeviceInfo.Characteristics getCharacteristics();
+
+ /**
* @return The camera capabilities.
*/
public CameraCapabilities getCapabilities();
diff --git a/camera2/portability/src/com/android/ex/camera2/portability/CameraDeviceInfo.java b/camera2/portability/src/com/android/ex/camera2/portability/CameraDeviceInfo.java
index 60ad8ed..ada1f29 100644
--- a/camera2/portability/src/com/android/ex/camera2/portability/CameraDeviceInfo.java
+++ b/camera2/portability/src/com/android/ex/camera2/portability/CameraDeviceInfo.java
@@ -3,18 +3,17 @@ package com.android.ex.camera2.portability;
import android.hardware.Camera;
/**
- * The camera device info.
+ * The device info for all attached cameras.
*/
public interface CameraDeviceInfo {
static final int NO_DEVICE = -1;
/**
- * @return The camera info.
- * // TODO: Remove the dependency on API 1.
+ * @param cameraId Which device to interrogate.
+ * @return The static characteristics of the specified device, or {@code null} on error.
*/
- @Deprecated
- Camera.CameraInfo[] getCameraInfos();
+ Characteristics getCharacteristics(int cameraId);
/**
* @return The total number of the available camera devices.
@@ -32,4 +31,31 @@ public interface CameraDeviceInfo {
* if not available.
*/
int getFirstFrontCameraId();
+
+ /**
+ * Device characteristics for a single camera.
+ */
+ public interface Characteristics {
+ /**
+ * @return Whether the camera faces the back of the device.
+ */
+ boolean isFacingBack();
+
+ /**
+ * @return Whether the camera faces the device's screen.
+ */
+ boolean isFacingFront();
+
+ /**
+ * @return The camera image orientation, or the clockwise rotation angle
+ * that must be applied to display it in its natural orientation
+ * (in degrees, and always a multiple of 90).
+ */
+ int getSensorOrientation();
+
+ /**
+ * @return Whether the shutter sound can be disabled.
+ */
+ boolean canDisableShutterSound();
+ }
}