diff options
Diffstat (limited to 'camera2/utils')
-rw-r--r-- | camera2/utils/src/com/android/ex/camera2/utils/Camera2CaptureCallbackForwarder.java (renamed from camera2/utils/src/com/android/ex/camera2/utils/Camera2CaptureListenerForwarder.java) | 14 | ||||
-rw-r--r-- | camera2/utils/src/com/android/ex/camera2/utils/Camera2CaptureCallbackSplitter.java (renamed from camera2/utils/src/com/android/ex/camera2/utils/Camera2CaptureListenerSplitter.java) | 28 | ||||
-rw-r--r-- | camera2/utils/src/com/android/ex/camera2/utils/Camera2RequestSettingsSet.java | 17 | ||||
-rw-r--r-- | camera2/utils/tests/src/com/android/ex/camera2/utils/Camera2DeviceTester.java | 2 | ||||
-rw-r--r-- | camera2/utils/tests/src/com/android/ex/camera2/utils/Camera2UtilsTest.java | 78 |
5 files changed, 97 insertions, 42 deletions
diff --git a/camera2/utils/src/com/android/ex/camera2/utils/Camera2CaptureListenerForwarder.java b/camera2/utils/src/com/android/ex/camera2/utils/Camera2CaptureCallbackForwarder.java index 35b1c6d..e6988b5 100644 --- a/camera2/utils/src/com/android/ex/camera2/utils/Camera2CaptureListenerForwarder.java +++ b/camera2/utils/src/com/android/ex/camera2/utils/Camera2CaptureCallbackForwarder.java @@ -17,7 +17,7 @@ package com.android.ex.camera2.utils; import android.hardware.camera2.CameraCaptureSession; -import android.hardware.camera2.CameraCaptureSession.CaptureListener; +import android.hardware.camera2.CameraCaptureSession.CaptureCallback; import android.hardware.camera2.CaptureFailure; import android.hardware.camera2.CaptureRequest; import android.hardware.camera2.CaptureResult; @@ -25,14 +25,14 @@ import android.hardware.camera2.TotalCaptureResult; import android.os.Handler; /** - * Proxy that forwards all updates to another {@link CaptureListener}, invoking + * Proxy that forwards all updates to another {@link CaptureCallback}, invoking * its callbacks on a separate {@link Handler}. */ -public class Camera2CaptureListenerForwarder extends CaptureListener { - private CaptureListener mListener; +public class Camera2CaptureCallbackForwarder extends CaptureCallback { + private CaptureCallback mListener; private Handler mHandler; - public Camera2CaptureListenerForwarder(CaptureListener listener, Handler handler) { + public Camera2CaptureCallbackForwarder(CaptureCallback listener, Handler handler) { mListener = listener; mHandler = handler; } @@ -89,11 +89,11 @@ public class Camera2CaptureListenerForwarder extends CaptureListener { @Override public void onCaptureStarted(final CameraCaptureSession session, final CaptureRequest request, - final long timestamp) { + final long timestamp, final long frameNumber) { mHandler.post(new Runnable() { @Override public void run() { - mListener.onCaptureStarted(session, request, timestamp); + mListener.onCaptureStarted(session, request, timestamp, frameNumber); }}); } } diff --git a/camera2/utils/src/com/android/ex/camera2/utils/Camera2CaptureListenerSplitter.java b/camera2/utils/src/com/android/ex/camera2/utils/Camera2CaptureCallbackSplitter.java index a13dc04..86c6070 100644 --- a/camera2/utils/src/com/android/ex/camera2/utils/Camera2CaptureListenerSplitter.java +++ b/camera2/utils/src/com/android/ex/camera2/utils/Camera2CaptureCallbackSplitter.java @@ -17,7 +17,7 @@ package com.android.ex.camera2.utils; import android.hardware.camera2.CameraCaptureSession; -import android.hardware.camera2.CameraCaptureSession.CaptureListener; +import android.hardware.camera2.CameraCaptureSession.CaptureCallback; import android.hardware.camera2.CaptureFailure; import android.hardware.camera2.CaptureRequest; import android.hardware.camera2.CaptureResult; @@ -28,18 +28,18 @@ import java.util.LinkedList; import java.util.List; /** - * Junction that allows notifying multiple {@link CaptureListener}s whenever + * Junction that allows notifying multiple {@link CaptureCallback}s whenever * the {@link CameraCaptureSession} posts a capture-related update. */ -public class Camera2CaptureListenerSplitter extends CaptureListener { - private final List<CaptureListener> mRecipients = new LinkedList<>(); +public class Camera2CaptureCallbackSplitter extends CaptureCallback { + private final List<CaptureCallback> mRecipients = new LinkedList<>(); /** * @param recipients The listeners to notify. Any {@code null} passed here * will be completely ignored. */ - public Camera2CaptureListenerSplitter(CaptureListener... recipients) { - for (CaptureListener listener : recipients) { + public Camera2CaptureCallbackSplitter(CaptureCallback... recipients) { + for (CaptureCallback listener : recipients) { if (listener != null) { mRecipients.add(listener); } @@ -49,7 +49,7 @@ public class Camera2CaptureListenerSplitter extends CaptureListener { @Override public void onCaptureCompleted(CameraCaptureSession session, CaptureRequest request, TotalCaptureResult result) { - for (CaptureListener target : mRecipients) { + for (CaptureCallback target : mRecipients) { target.onCaptureCompleted(session, request, result); } } @@ -57,7 +57,7 @@ public class Camera2CaptureListenerSplitter extends CaptureListener { @Override public void onCaptureFailed(CameraCaptureSession session, CaptureRequest request, CaptureFailure failure) { - for (CaptureListener target : mRecipients) { + for (CaptureCallback target : mRecipients) { target.onCaptureFailed(session, request, failure); } } @@ -65,14 +65,14 @@ public class Camera2CaptureListenerSplitter extends CaptureListener { @Override public void onCaptureProgressed(CameraCaptureSession session, CaptureRequest request, CaptureResult partialResult) { - for (CaptureListener target : mRecipients) { + for (CaptureCallback target : mRecipients) { target.onCaptureProgressed(session, request, partialResult); } } @Override public void onCaptureSequenceAborted(CameraCaptureSession session, int sequenceId) { - for (CaptureListener target : mRecipients) { + for (CaptureCallback target : mRecipients) { target.onCaptureSequenceAborted(session, sequenceId); } } @@ -80,16 +80,16 @@ public class Camera2CaptureListenerSplitter extends CaptureListener { @Override public void onCaptureSequenceCompleted(CameraCaptureSession session, int sequenceId, long frameNumber) { - for (CaptureListener target : mRecipients) { + for (CaptureCallback target : mRecipients) { target.onCaptureSequenceCompleted(session, sequenceId, frameNumber); } } @Override public void onCaptureStarted(CameraCaptureSession session, CaptureRequest request, - long timestamp) { - for (CaptureListener target : mRecipients) { - target.onCaptureStarted(session, request, timestamp); + long timestamp, long frameNumber) { + for (CaptureCallback target : mRecipients) { + target.onCaptureStarted(session, request, timestamp, frameNumber); } } } diff --git a/camera2/utils/src/com/android/ex/camera2/utils/Camera2RequestSettingsSet.java b/camera2/utils/src/com/android/ex/camera2/utils/Camera2RequestSettingsSet.java index fac8f1a..6e1d825 100644 --- a/camera2/utils/src/com/android/ex/camera2/utils/Camera2RequestSettingsSet.java +++ b/camera2/utils/src/com/android/ex/camera2/utils/Camera2RequestSettingsSet.java @@ -146,7 +146,7 @@ public class Camera2RequestSettingsSet { * to its default value or simply unset. While {@link #get} will return * {@code null} in both these cases, this method will return {@code true} * and {@code false}, respectively.</p> - + * * @param key Which setting to look for. * @return Whether that setting has a value that will propagate with unions. * @@ -160,8 +160,23 @@ public class Camera2RequestSettingsSet { } /** + * Check whether the value of the specified setting matches the given one. + * + * <p>This method uses the {@code T} type's {@code equals} method, but is + * {@code null}-tolerant.</p> + * + * @param key Which of this class's settings to check. + * @param value Value to test for equality against. + * @return Whether they are the same. + */ + public <T> boolean matches(Key<T> key, T value) { + return Objects.equals(get(key), value); + } + + /** * Get this set of settings's revision identifier, which can be compared * against cached past values to determine whether it has been modified. + * * <p>Distinct revisions across the same object do not necessarily indicate * that the object's key/value pairs have changed at all, but the same * revision on the same object does imply that they've stayed the same.</p> diff --git a/camera2/utils/tests/src/com/android/ex/camera2/utils/Camera2DeviceTester.java b/camera2/utils/tests/src/com/android/ex/camera2/utils/Camera2DeviceTester.java index 4db6dfb..e8639ba 100644 --- a/camera2/utils/tests/src/com/android/ex/camera2/utils/Camera2DeviceTester.java +++ b/camera2/utils/tests/src/com/android/ex/camera2/utils/Camera2DeviceTester.java @@ -52,7 +52,7 @@ public class Camera2DeviceTester { @InjectContext public Context mContext; - private class DeviceCapturer extends CameraDevice.StateListener { + private class DeviceCapturer extends CameraDevice.StateCallback { private CameraDevice mCamera; public CameraDevice captureCameraDevice() throws Exception { diff --git a/camera2/utils/tests/src/com/android/ex/camera2/utils/Camera2UtilsTest.java b/camera2/utils/tests/src/com/android/ex/camera2/utils/Camera2UtilsTest.java index 01eda8f..ea320a7 100644 --- a/camera2/utils/tests/src/com/android/ex/camera2/utils/Camera2UtilsTest.java +++ b/camera2/utils/tests/src/com/android/ex/camera2/utils/Camera2UtilsTest.java @@ -23,7 +23,8 @@ import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; -import android.hardware.camera2.CameraCaptureSession.CaptureListener; +import android.graphics.Rect; +import android.hardware.camera2.CameraCaptureSession.CaptureCallback; import android.hardware.camera2.CameraDevice; import android.hardware.camera2.CaptureRequest; import android.hardware.camera2.CaptureRequest.Key; @@ -32,65 +33,65 @@ import android.view.Surface; import org.junit.Test; public class Camera2UtilsTest extends Camera2DeviceTester { - private void captureListenerSplitterAllCallbacksReceived(CaptureListener splitter, - CaptureListener... terminals) { + private void captureListenerSplitterAllCallbacksReceived(CaptureCallback splitter, + CaptureCallback... terminals) { splitter.onCaptureCompleted(null, null, null); - for (CaptureListener each : terminals) { + for (CaptureCallback each : terminals) { verify(each).onCaptureCompleted(null, null, null); } splitter.onCaptureFailed(null, null, null); - for (CaptureListener each : terminals) { + for (CaptureCallback each : terminals) { verify(each).onCaptureFailed(null, null, null); } splitter.onCaptureProgressed(null, null, null); - for (CaptureListener each : terminals) { + for (CaptureCallback each : terminals) { verify(each).onCaptureProgressed(null, null, null); } splitter.onCaptureSequenceAborted(null, 0); - for (CaptureListener each : terminals) { + for (CaptureCallback each : terminals) { verify(each).onCaptureSequenceAborted(null, 0); } splitter.onCaptureSequenceCompleted(null, 0, 0L); - for (CaptureListener each : terminals) { + for (CaptureCallback each : terminals) { verify(each).onCaptureSequenceCompleted(null, 0, 0L); } - splitter.onCaptureStarted(null, null, 0L); - for (CaptureListener each : terminals) { - verify(each).onCaptureStarted(null, null, 0L); + splitter.onCaptureStarted(null, null, 0L, 1L); + for (CaptureCallback each : terminals) { + verify(each).onCaptureStarted(null, null, 0L, 1L); } } @Test public void captureListenerSplitter() { - CaptureListener firstBackingListener = mock(CaptureListener.class); - CaptureListener secondBackingListener = mock(CaptureListener.class); + CaptureCallback firstBackingListener = mock(CaptureCallback.class); + CaptureCallback secondBackingListener = mock(CaptureCallback.class); captureListenerSplitterAllCallbacksReceived( - new Camera2CaptureListenerSplitter(firstBackingListener, secondBackingListener), + new Camera2CaptureCallbackSplitter(firstBackingListener, secondBackingListener), firstBackingListener, secondBackingListener); } @Test public void captureListenerSplitterEmpty() { - captureListenerSplitterAllCallbacksReceived(new Camera2CaptureListenerSplitter()); + captureListenerSplitterAllCallbacksReceived(new Camera2CaptureCallbackSplitter()); } @Test public void captureListenerSplitterNoNpe() { captureListenerSplitterAllCallbacksReceived( - new Camera2CaptureListenerSplitter((CaptureListener) null)); + new Camera2CaptureCallbackSplitter((CaptureCallback) null)); } @Test public void captureListenerSplitterMultipleNulls() { captureListenerSplitterAllCallbacksReceived( - new Camera2CaptureListenerSplitter(null, null, null)); + new Camera2CaptureCallbackSplitter(null, null, null)); } @Test public void captureListenerSplitterValidAndNull() { - CaptureListener onlyRealBackingListener = mock(CaptureListener.class); + CaptureCallback onlyRealBackingListener = mock(CaptureCallback.class); captureListenerSplitterAllCallbacksReceived( - new Camera2CaptureListenerSplitter(null, onlyRealBackingListener), + new Camera2CaptureCallbackSplitter(null, onlyRealBackingListener), onlyRealBackingListener); } @@ -234,6 +235,45 @@ public class Camera2UtilsTest extends Camera2DeviceTester { setUp.get(null); } + @Test + public void requestSettingsSetMatchesPrimitives() { + Camera2RequestSettingsSet setUp = new Camera2RequestSettingsSet(); + assertTrue(setUp.matches(CaptureRequest.CONTROL_AE_LOCK, null)); + assertFalse(setUp.matches(CaptureRequest.CONTROL_AE_LOCK, false)); + assertFalse(setUp.matches(CaptureRequest.CONTROL_AE_LOCK, true)); + + setUp.set(CaptureRequest.CONTROL_AE_LOCK, null); + assertTrue(setUp.matches(CaptureRequest.CONTROL_AE_LOCK, null)); + assertFalse(setUp.matches(CaptureRequest.CONTROL_AE_LOCK, false)); + assertFalse(setUp.matches(CaptureRequest.CONTROL_AE_LOCK, true)); + + setUp.set(CaptureRequest.CONTROL_AE_LOCK, false); + assertFalse(setUp.matches(CaptureRequest.CONTROL_AE_LOCK, null)); + assertTrue(setUp.matches(CaptureRequest.CONTROL_AE_LOCK, false)); + assertFalse(setUp.matches(CaptureRequest.CONTROL_AE_LOCK, true)); + + setUp.set(CaptureRequest.CONTROL_AE_LOCK, true); + assertFalse(setUp.matches(CaptureRequest.CONTROL_AE_LOCK, null)); + assertFalse(setUp.matches(CaptureRequest.CONTROL_AE_LOCK, false)); + assertTrue(setUp.matches(CaptureRequest.CONTROL_AE_LOCK, true)); + } + + @Test + public void requestSettingsSetMatchesReferences() { + Camera2RequestSettingsSet setUp = new Camera2RequestSettingsSet(); + assertTrue(setUp.matches(CaptureRequest.SCALER_CROP_REGION, null)); + assertFalse(setUp.matches(CaptureRequest.SCALER_CROP_REGION, new Rect(0, 0, 0, 0))); + + setUp.set(CaptureRequest.SCALER_CROP_REGION, null); + assertTrue(setUp.matches(CaptureRequest.SCALER_CROP_REGION, null)); + assertFalse(setUp.matches(CaptureRequest.SCALER_CROP_REGION, new Rect(0, 0, 0, 0))); + + setUp.set(CaptureRequest.SCALER_CROP_REGION, new Rect(0, 0, 0, 0)); + assertFalse(setUp.matches(CaptureRequest.SCALER_CROP_REGION, null)); + assertTrue(setUp.matches(CaptureRequest.SCALER_CROP_REGION, new Rect(0, 0, 0, 0))); + assertFalse(setUp.matches(CaptureRequest.SCALER_CROP_REGION, new Rect(0, 0, 1, 1))); + } + @Test(expected=NullPointerException.class) public void requestSettingsSetNullArgToCreateRequest0() throws Exception { Camera2RequestSettingsSet setUp = new Camera2RequestSettingsSet(); |