Loading api/current.txt +5 −1 Original line number Diff line number Diff line Loading @@ -16499,6 +16499,7 @@ package android.hardware.camera2 { method public abstract void createReprocessableCaptureSession(android.hardware.camera2.params.InputConfiguration, java.util.List<android.view.Surface>, android.hardware.camera2.CameraCaptureSession.StateCallback, android.os.Handler) throws android.hardware.camera2.CameraAccessException; method public abstract void createReprocessableCaptureSessionByConfigurations(android.hardware.camera2.params.InputConfiguration, java.util.List<android.hardware.camera2.params.OutputConfiguration>, android.hardware.camera2.CameraCaptureSession.StateCallback, android.os.Handler) throws android.hardware.camera2.CameraAccessException; method public abstract java.lang.String getId(); method public boolean isSessionConfigurationSupported(android.hardware.camera2.params.SessionConfiguration) throws android.hardware.camera2.CameraAccessException; field public static final int TEMPLATE_MANUAL = 6; // 0x6 field public static final int TEMPLATE_PREVIEW = 1; // 0x1 field public static final int TEMPLATE_RECORD = 3; // 0x3 Loading Loading @@ -17096,8 +17097,9 @@ package android.hardware.camera2.params { field public static final int RED = 0; // 0x0 } public final class SessionConfiguration { public final class SessionConfiguration implements android.os.Parcelable { ctor public SessionConfiguration(int, java.util.List<android.hardware.camera2.params.OutputConfiguration>, java.util.concurrent.Executor, android.hardware.camera2.CameraCaptureSession.StateCallback); method public int describeContents(); method public java.util.concurrent.Executor getExecutor(); method public android.hardware.camera2.params.InputConfiguration getInputConfiguration(); method public java.util.List<android.hardware.camera2.params.OutputConfiguration> getOutputConfigurations(); Loading @@ -17106,6 +17108,8 @@ package android.hardware.camera2.params { method public android.hardware.camera2.CameraCaptureSession.StateCallback getStateCallback(); method public void setInputConfiguration(android.hardware.camera2.params.InputConfiguration); method public void setSessionParameters(android.hardware.camera2.CaptureRequest); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator<android.hardware.camera2.params.SessionConfiguration> CREATOR; field public static final int SESSION_HIGH_SPEED = 1; // 0x1 field public static final int SESSION_REGULAR = 0; // 0x0 } core/java/android/hardware/camera2/CameraDevice.java +30 −0 Original line number Diff line number Diff line Loading @@ -967,6 +967,36 @@ public abstract class CameraDevice implements AutoCloseable { @Override public abstract void close(); /** * Checks whether a particular {@link SessionConfiguration} is supported by the camera device. * * <p>This method performs a runtime check of a given {@link SessionConfiguration}. The result * confirms whether or not the passed session configuration can be successfully used to * create a camera capture session using * {@link CameraDevice#createCaptureSession(SessionConfiguration)}. * </p> * * <p>The method can be called at any point before, during and after active capture session. * It must not impact normal camera behavior in any way and must complete significantly * faster than creating a regular or constrained capture session.</p> * * <p>Note that session parameters will be ignored and calls to * {@link SessionConfiguration#setSessionParameters} are not required.</p> * * @return {@code true} if the given session configuration is supported by the camera device * {@code false} otherwise. * @throws UnsupportedOperationException if the query operation is not supported by the camera * device * @throws IllegalArgumentException if the session configuration is invalid * @throws CameraAccessException if the camera device is no longer connected or has * encountered a fatal error * @throws IllegalStateException if the camera device has been closed */ public boolean isSessionConfigurationSupported( @NonNull SessionConfiguration sessionConfig) throws CameraAccessException { throw new UnsupportedOperationException("Subclasses must override this method"); } /** * A callback objects for receiving updates about the state of a camera device. * Loading core/java/android/hardware/camera2/impl/CameraDeviceImpl.java +11 −0 Original line number Diff line number Diff line Loading @@ -703,6 +703,17 @@ public class CameraDeviceImpl extends CameraDevice } } @Override public boolean isSessionConfigurationSupported( @NonNull SessionConfiguration sessionConfig) throws CameraAccessException, UnsupportedOperationException, IllegalArgumentException { synchronized(mInterfaceLock) { checkIfCameraClosedOrInError(); return mRemoteDevice.isSessionConfigurationSupported(sessionConfig); } } /** * For use by backwards-compatibility code only. */ Loading core/java/android/hardware/camera2/impl/ICameraDeviceUserWrapper.java +21 −0 Original line number Diff line number Diff line Loading @@ -30,9 +30,11 @@ import android.hardware.camera2.CaptureRequest; import android.hardware.camera2.ICameraDeviceUser; import android.hardware.camera2.impl.CameraMetadataNative; import android.hardware.camera2.params.OutputConfiguration; import android.hardware.camera2.params.SessionConfiguration; import android.hardware.camera2.utils.SubmitInfo; import android.os.IBinder; import android.os.RemoteException; import android.os.ServiceSpecificException; import android.view.Surface; /** Loading Loading @@ -181,6 +183,25 @@ public class ICameraDeviceUserWrapper { } } public boolean isSessionConfigurationSupported(SessionConfiguration sessionConfig) throws CameraAccessException { try { return mRemoteDevice.isSessionConfigurationSupported(sessionConfig); } catch (ServiceSpecificException e) { if (e.errorCode == ICameraService.ERROR_INVALID_OPERATION) { throw new UnsupportedOperationException("Session configuration query not " + "supported"); } else if (e.errorCode == ICameraService.ERROR_ILLEGAL_ARGUMENT) { throw new IllegalArgumentException("Invalid session configuration"); } throw e; } catch (Throwable t) { CameraManager.throwAsPublicException(t); throw new UnsupportedOperationException("Unexpected exception", t); } } public long flush() throws CameraAccessException { try { return mRemoteDevice.flush(); Loading core/java/android/hardware/camera2/legacy/CameraDeviceUserShim.java +7 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import android.hardware.camera2.impl.CameraMetadataNative; import android.hardware.camera2.impl.CaptureResultExtras; import android.hardware.camera2.impl.PhysicalCaptureResultInfo; import android.hardware.camera2.params.OutputConfiguration; import android.hardware.camera2.params.SessionConfiguration; import android.hardware.camera2.utils.SubmitInfo; import android.os.ConditionVariable; import android.os.IBinder; Loading Loading @@ -479,6 +480,12 @@ public class CameraDeviceUserShim implements ICameraDeviceUser { return mLegacyDevice.cancelRequest(requestId); } @Override public boolean isSessionConfigurationSupported(SessionConfiguration sessionConfig) { // TODO: Add support for this in legacy mode throw new UnsupportedOperationException("Session configuration query not supported!"); } @Override public void beginConfigure() { if (DEBUG) { Loading Loading
api/current.txt +5 −1 Original line number Diff line number Diff line Loading @@ -16499,6 +16499,7 @@ package android.hardware.camera2 { method public abstract void createReprocessableCaptureSession(android.hardware.camera2.params.InputConfiguration, java.util.List<android.view.Surface>, android.hardware.camera2.CameraCaptureSession.StateCallback, android.os.Handler) throws android.hardware.camera2.CameraAccessException; method public abstract void createReprocessableCaptureSessionByConfigurations(android.hardware.camera2.params.InputConfiguration, java.util.List<android.hardware.camera2.params.OutputConfiguration>, android.hardware.camera2.CameraCaptureSession.StateCallback, android.os.Handler) throws android.hardware.camera2.CameraAccessException; method public abstract java.lang.String getId(); method public boolean isSessionConfigurationSupported(android.hardware.camera2.params.SessionConfiguration) throws android.hardware.camera2.CameraAccessException; field public static final int TEMPLATE_MANUAL = 6; // 0x6 field public static final int TEMPLATE_PREVIEW = 1; // 0x1 field public static final int TEMPLATE_RECORD = 3; // 0x3 Loading Loading @@ -17096,8 +17097,9 @@ package android.hardware.camera2.params { field public static final int RED = 0; // 0x0 } public final class SessionConfiguration { public final class SessionConfiguration implements android.os.Parcelable { ctor public SessionConfiguration(int, java.util.List<android.hardware.camera2.params.OutputConfiguration>, java.util.concurrent.Executor, android.hardware.camera2.CameraCaptureSession.StateCallback); method public int describeContents(); method public java.util.concurrent.Executor getExecutor(); method public android.hardware.camera2.params.InputConfiguration getInputConfiguration(); method public java.util.List<android.hardware.camera2.params.OutputConfiguration> getOutputConfigurations(); Loading @@ -17106,6 +17108,8 @@ package android.hardware.camera2.params { method public android.hardware.camera2.CameraCaptureSession.StateCallback getStateCallback(); method public void setInputConfiguration(android.hardware.camera2.params.InputConfiguration); method public void setSessionParameters(android.hardware.camera2.CaptureRequest); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator<android.hardware.camera2.params.SessionConfiguration> CREATOR; field public static final int SESSION_HIGH_SPEED = 1; // 0x1 field public static final int SESSION_REGULAR = 0; // 0x0 }
core/java/android/hardware/camera2/CameraDevice.java +30 −0 Original line number Diff line number Diff line Loading @@ -967,6 +967,36 @@ public abstract class CameraDevice implements AutoCloseable { @Override public abstract void close(); /** * Checks whether a particular {@link SessionConfiguration} is supported by the camera device. * * <p>This method performs a runtime check of a given {@link SessionConfiguration}. The result * confirms whether or not the passed session configuration can be successfully used to * create a camera capture session using * {@link CameraDevice#createCaptureSession(SessionConfiguration)}. * </p> * * <p>The method can be called at any point before, during and after active capture session. * It must not impact normal camera behavior in any way and must complete significantly * faster than creating a regular or constrained capture session.</p> * * <p>Note that session parameters will be ignored and calls to * {@link SessionConfiguration#setSessionParameters} are not required.</p> * * @return {@code true} if the given session configuration is supported by the camera device * {@code false} otherwise. * @throws UnsupportedOperationException if the query operation is not supported by the camera * device * @throws IllegalArgumentException if the session configuration is invalid * @throws CameraAccessException if the camera device is no longer connected or has * encountered a fatal error * @throws IllegalStateException if the camera device has been closed */ public boolean isSessionConfigurationSupported( @NonNull SessionConfiguration sessionConfig) throws CameraAccessException { throw new UnsupportedOperationException("Subclasses must override this method"); } /** * A callback objects for receiving updates about the state of a camera device. * Loading
core/java/android/hardware/camera2/impl/CameraDeviceImpl.java +11 −0 Original line number Diff line number Diff line Loading @@ -703,6 +703,17 @@ public class CameraDeviceImpl extends CameraDevice } } @Override public boolean isSessionConfigurationSupported( @NonNull SessionConfiguration sessionConfig) throws CameraAccessException, UnsupportedOperationException, IllegalArgumentException { synchronized(mInterfaceLock) { checkIfCameraClosedOrInError(); return mRemoteDevice.isSessionConfigurationSupported(sessionConfig); } } /** * For use by backwards-compatibility code only. */ Loading
core/java/android/hardware/camera2/impl/ICameraDeviceUserWrapper.java +21 −0 Original line number Diff line number Diff line Loading @@ -30,9 +30,11 @@ import android.hardware.camera2.CaptureRequest; import android.hardware.camera2.ICameraDeviceUser; import android.hardware.camera2.impl.CameraMetadataNative; import android.hardware.camera2.params.OutputConfiguration; import android.hardware.camera2.params.SessionConfiguration; import android.hardware.camera2.utils.SubmitInfo; import android.os.IBinder; import android.os.RemoteException; import android.os.ServiceSpecificException; import android.view.Surface; /** Loading Loading @@ -181,6 +183,25 @@ public class ICameraDeviceUserWrapper { } } public boolean isSessionConfigurationSupported(SessionConfiguration sessionConfig) throws CameraAccessException { try { return mRemoteDevice.isSessionConfigurationSupported(sessionConfig); } catch (ServiceSpecificException e) { if (e.errorCode == ICameraService.ERROR_INVALID_OPERATION) { throw new UnsupportedOperationException("Session configuration query not " + "supported"); } else if (e.errorCode == ICameraService.ERROR_ILLEGAL_ARGUMENT) { throw new IllegalArgumentException("Invalid session configuration"); } throw e; } catch (Throwable t) { CameraManager.throwAsPublicException(t); throw new UnsupportedOperationException("Unexpected exception", t); } } public long flush() throws CameraAccessException { try { return mRemoteDevice.flush(); Loading
core/java/android/hardware/camera2/legacy/CameraDeviceUserShim.java +7 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import android.hardware.camera2.impl.CameraMetadataNative; import android.hardware.camera2.impl.CaptureResultExtras; import android.hardware.camera2.impl.PhysicalCaptureResultInfo; import android.hardware.camera2.params.OutputConfiguration; import android.hardware.camera2.params.SessionConfiguration; import android.hardware.camera2.utils.SubmitInfo; import android.os.ConditionVariable; import android.os.IBinder; Loading Loading @@ -479,6 +480,12 @@ public class CameraDeviceUserShim implements ICameraDeviceUser { return mLegacyDevice.cancelRequest(requestId); } @Override public boolean isSessionConfigurationSupported(SessionConfiguration sessionConfig) { // TODO: Add support for this in legacy mode throw new UnsupportedOperationException("Session configuration query not supported!"); } @Override public void beginConfigure() { if (DEBUG) { Loading