summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSol Boucher <solb@google.com>2014-06-24 18:45:00 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2014-06-24 18:00:13 +0000
commitb73b7335d8b1e880b1f49e0279ca231a06b89ba0 (patch)
tree0f438ba5a56197d5e806351630ee204364ff3af2
parent5bafa7ceeaf79da19177f7928a8682f5ccaea1ce (diff)
parentb30d2c670f1262f0d60181e40dad33f2151fee4a (diff)
downloadandroid_frameworks_ex-b73b7335d8b1e880b1f49e0279ca231a06b89ba0.tar.gz
android_frameworks_ex-b73b7335d8b1e880b1f49e0279ca231a06b89ba0.tar.bz2
android_frameworks_ex-b73b7335d8b1e880b1f49e0279ca231a06b89ba0.zip
Merge "camera2-portability: Remove Camera.CameraInfo accessor"
-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();
+ }
}