diff options
author | Sol Boucher <solb@google.com> | 2014-06-19 14:54:49 -0700 |
---|---|---|
committer | Sol Boucher <solb@google.com> | 2014-06-20 14:25:04 -0700 |
commit | b30d2c670f1262f0d60181e40dad33f2151fee4a (patch) | |
tree | 7d82b5cd401ec0f956294a9b508618b356b70edd | |
parent | 01e7c02174ef268b6d6daaa5a5bb4f752d55964c (diff) | |
download | android_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
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(); + } } |