Loading core/api/current.txt +1 −1 Original line number Diff line number Diff line Loading @@ -19227,7 +19227,6 @@ package android.hardware.camera2 { method @Deprecated public abstract void createReprocessableCaptureSessionByConfigurations(@NonNull android.hardware.camera2.params.InputConfiguration, @NonNull java.util.List<android.hardware.camera2.params.OutputConfiguration>, @NonNull android.hardware.camera2.CameraCaptureSession.StateCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException; method public int getCameraAudioRestriction() throws android.hardware.camera2.CameraAccessException; method @NonNull public abstract String getId(); method @FlaggedApi("com.android.internal.camera.flags.feature_combination_query") @NonNull public android.hardware.camera2.CameraCharacteristics getSessionCharacteristics(@NonNull android.hardware.camera2.params.SessionConfiguration) throws android.hardware.camera2.CameraAccessException; method public boolean isSessionConfigurationSupported(@NonNull android.hardware.camera2.params.SessionConfiguration) throws android.hardware.camera2.CameraAccessException; method public void setCameraAudioRestriction(int) throws android.hardware.camera2.CameraAccessException; field public static final int AUDIO_RESTRICTION_NONE = 0; // 0x0 Loading @@ -19244,6 +19243,7 @@ package android.hardware.camera2 { @FlaggedApi("com.android.internal.camera.flags.camera_device_setup") public abstract static class CameraDevice.CameraDeviceSetup { method @FlaggedApi("com.android.internal.camera.flags.camera_device_setup") @NonNull public abstract android.hardware.camera2.CaptureRequest.Builder createCaptureRequest(int) throws android.hardware.camera2.CameraAccessException; method @FlaggedApi("com.android.internal.camera.flags.camera_device_setup") @NonNull public abstract String getId(); method @FlaggedApi("com.android.internal.camera.flags.camera_device_setup") @NonNull public abstract android.hardware.camera2.CameraCharacteristics getSessionCharacteristics(@NonNull android.hardware.camera2.params.SessionConfiguration) throws android.hardware.camera2.CameraAccessException; method @FlaggedApi("com.android.internal.camera.flags.camera_device_setup") public abstract boolean isSessionConfigurationSupported(@NonNull android.hardware.camera2.params.SessionConfiguration) throws android.hardware.camera2.CameraAccessException; method @FlaggedApi("com.android.internal.camera.flags.camera_device_setup") @RequiresPermission(android.Manifest.permission.CAMERA) public abstract void openCamera(@NonNull java.util.concurrent.Executor, @NonNull android.hardware.camera2.CameraDevice.StateCallback) throws android.hardware.camera2.CameraAccessException; } core/java/android/hardware/camera2/CameraDevice.java +28 −29 Original line number Diff line number Diff line Loading @@ -1420,34 +1420,6 @@ public abstract class CameraDevice implements AutoCloseable { throw new UnsupportedOperationException("Subclasses must override this method"); } /** * <p>Get camera characteristics for a particular session configuration by the camera device.</p> * * <p>The camera characteristics returned here is typically more limited than the characteristics * returned from {@link CameraManager#getCameraCharacteristics}. The keys that have more limited * values are listed in * {@link CameraCharacteristics#getAvailableSessionCharacteristicsKeys}. </p> * * <p>Other than that, the characteristics returned here can be used in the same way as those * returned from {@link CameraManager#getCameraCharacteristics}.</p> * * @param sessionConfig : The session configuration for which characteristics are fetched. * @return CameraCharacteristics specific to a given session configuration. * @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 * @see android.hardware.camera2.CameraCharacteristics#getAvailableSessionCharacteristicsKeys */ @NonNull @FlaggedApi(Flags.FLAG_FEATURE_COMBINATION_QUERY) public CameraCharacteristics getSessionCharacteristics( @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 Loading @@ -1733,6 +1705,33 @@ public abstract class CameraDevice implements AutoCloseable { public abstract boolean isSessionConfigurationSupported( @NonNull SessionConfiguration config) throws CameraAccessException; /** * <p>Get camera characteristics for a particular session configuration for this camera * device</p> * * <p>The camera characteristics returned by this method are different from those returned * from {@link CameraManager#getCameraCharacteristics}. The characteristics returned here * reflect device capabilities more accurately if the device were to be configured with * {@code sessionConfig}. The keys that may get updated are listed in * {@link CameraCharacteristics#getAvailableSessionCharacteristicsKeys}.</p> * * <p>Other than that, the characteristics returned here can be used in the same way as * those returned from {@link CameraManager#getCameraCharacteristics}.</p> * * @param sessionConfig : The session configuration for which characteristics are fetched. * @return CameraCharacteristics specific to a given session configuration. * * @throws IllegalArgumentException if the session configuration is invalid * @throws CameraAccessException if the camera device is no longer connected or has * encountered a fatal error * * @see CameraCharacteristics#getAvailableSessionCharacteristicsKeys */ @NonNull @FlaggedApi(Flags.FLAG_CAMERA_DEVICE_SETUP) public abstract CameraCharacteristics getSessionCharacteristics( @NonNull SessionConfiguration sessionConfig) throws CameraAccessException; /** * Utility function to forward the call to * {@link CameraManager#openCamera(String, Executor, StateCallback)}. This function simply Loading core/java/android/hardware/camera2/CameraManager.java +1 −2 Original line number Diff line number Diff line Loading @@ -772,8 +772,7 @@ public final class CameraManager { "CameraDeviceSetup is not supported for Camera ID: " + cameraId); } return new CameraDeviceSetupImpl(cameraId, /*cameraManager=*/ this, mContext.getApplicationInfo().targetSdkVersion); return new CameraDeviceSetupImpl(cameraId, /*cameraManager=*/ this, mContext); } /** Loading core/java/android/hardware/camera2/impl/CameraDeviceImpl.java +0 −12 Original line number Diff line number Diff line Loading @@ -811,18 +811,6 @@ public class CameraDeviceImpl extends CameraDevice } } @Override public CameraCharacteristics getSessionCharacteristics( @NonNull SessionConfiguration sessionConfig) throws CameraAccessException, UnsupportedOperationException, IllegalArgumentException { synchronized (mInterfaceLock) { checkIfCameraClosedOrInError(); CameraMetadataNative info = mRemoteDevice.getSessionCharacteristics(sessionConfig); return new CameraCharacteristics(info); } } /** * For use by backwards-compatibility code only. */ Loading core/java/android/hardware/camera2/impl/CameraDeviceSetupImpl.java +42 −2 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package android.hardware.camera2.impl; import android.annotation.CallbackExecutor; import android.annotation.FlaggedApi; import android.content.Context; import android.hardware.ICameraService; import android.hardware.camera2.CameraAccessException; import android.hardware.camera2.CameraCaptureSession; Loading @@ -40,15 +41,17 @@ import java.util.concurrent.Executor; public class CameraDeviceSetupImpl extends CameraDevice.CameraDeviceSetup { private final String mCameraId; private final CameraManager mCameraManager; private final Context mContext; private final int mTargetSdkVersion; private final Object mInterfaceLock = new Object(); public CameraDeviceSetupImpl(@NonNull String cameraId, @NonNull CameraManager cameraManager, int targetSdkVersion) { @NonNull Context context) { mCameraId = cameraId; mCameraManager = cameraManager; mTargetSdkVersion = targetSdkVersion; mContext = context; mTargetSdkVersion = context.getApplicationInfo().targetSdkVersion; } @NonNull Loading Loading @@ -110,6 +113,43 @@ public class CameraDeviceSetupImpl extends CameraDevice.CameraDeviceSetup { } } @NonNull @Override public CameraCharacteristics getSessionCharacteristics( @NonNull SessionConfiguration sessionConfig) throws CameraAccessException { synchronized (mInterfaceLock) { if (mCameraManager.isCameraServiceDisabled()) { throw new CameraAccessException(CameraAccessException.CAMERA_DISCONNECTED, "Camera service is currently disabled"); } ICameraService cameraService = mCameraManager.getCameraService(); if (cameraService == null) { throw new CameraAccessException(CameraAccessException.CAMERA_DISCONNECTED, "Camera service is currently unavailable"); } try { CameraMetadataNative metadataNative = cameraService.getSessionCharacteristics( mCameraId, mTargetSdkVersion, CameraManager.shouldOverrideToPortrait(mContext), sessionConfig); return new CameraCharacteristics(metadataNative); } catch (ServiceSpecificException e) { switch (e.errorCode) { case ICameraService.ERROR_INVALID_OPERATION -> throw new UnsupportedOperationException( "Session Characteristics Query not supported by device."); case ICameraService.ERROR_ILLEGAL_ARGUMENT -> throw new IllegalArgumentException("Invalid Session Configuration"); default -> throw ExceptionUtils.throwAsPublicException(e); } } catch (RemoteException e) { throw ExceptionUtils.throwAsPublicException(e); } } } @Override public void openCamera(@NonNull @CallbackExecutor Executor executor, @NonNull CameraDevice.StateCallback callback) throws CameraAccessException { Loading Loading
core/api/current.txt +1 −1 Original line number Diff line number Diff line Loading @@ -19227,7 +19227,6 @@ package android.hardware.camera2 { method @Deprecated public abstract void createReprocessableCaptureSessionByConfigurations(@NonNull android.hardware.camera2.params.InputConfiguration, @NonNull java.util.List<android.hardware.camera2.params.OutputConfiguration>, @NonNull android.hardware.camera2.CameraCaptureSession.StateCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException; method public int getCameraAudioRestriction() throws android.hardware.camera2.CameraAccessException; method @NonNull public abstract String getId(); method @FlaggedApi("com.android.internal.camera.flags.feature_combination_query") @NonNull public android.hardware.camera2.CameraCharacteristics getSessionCharacteristics(@NonNull android.hardware.camera2.params.SessionConfiguration) throws android.hardware.camera2.CameraAccessException; method public boolean isSessionConfigurationSupported(@NonNull android.hardware.camera2.params.SessionConfiguration) throws android.hardware.camera2.CameraAccessException; method public void setCameraAudioRestriction(int) throws android.hardware.camera2.CameraAccessException; field public static final int AUDIO_RESTRICTION_NONE = 0; // 0x0 Loading @@ -19244,6 +19243,7 @@ package android.hardware.camera2 { @FlaggedApi("com.android.internal.camera.flags.camera_device_setup") public abstract static class CameraDevice.CameraDeviceSetup { method @FlaggedApi("com.android.internal.camera.flags.camera_device_setup") @NonNull public abstract android.hardware.camera2.CaptureRequest.Builder createCaptureRequest(int) throws android.hardware.camera2.CameraAccessException; method @FlaggedApi("com.android.internal.camera.flags.camera_device_setup") @NonNull public abstract String getId(); method @FlaggedApi("com.android.internal.camera.flags.camera_device_setup") @NonNull public abstract android.hardware.camera2.CameraCharacteristics getSessionCharacteristics(@NonNull android.hardware.camera2.params.SessionConfiguration) throws android.hardware.camera2.CameraAccessException; method @FlaggedApi("com.android.internal.camera.flags.camera_device_setup") public abstract boolean isSessionConfigurationSupported(@NonNull android.hardware.camera2.params.SessionConfiguration) throws android.hardware.camera2.CameraAccessException; method @FlaggedApi("com.android.internal.camera.flags.camera_device_setup") @RequiresPermission(android.Manifest.permission.CAMERA) public abstract void openCamera(@NonNull java.util.concurrent.Executor, @NonNull android.hardware.camera2.CameraDevice.StateCallback) throws android.hardware.camera2.CameraAccessException; }
core/java/android/hardware/camera2/CameraDevice.java +28 −29 Original line number Diff line number Diff line Loading @@ -1420,34 +1420,6 @@ public abstract class CameraDevice implements AutoCloseable { throw new UnsupportedOperationException("Subclasses must override this method"); } /** * <p>Get camera characteristics for a particular session configuration by the camera device.</p> * * <p>The camera characteristics returned here is typically more limited than the characteristics * returned from {@link CameraManager#getCameraCharacteristics}. The keys that have more limited * values are listed in * {@link CameraCharacteristics#getAvailableSessionCharacteristicsKeys}. </p> * * <p>Other than that, the characteristics returned here can be used in the same way as those * returned from {@link CameraManager#getCameraCharacteristics}.</p> * * @param sessionConfig : The session configuration for which characteristics are fetched. * @return CameraCharacteristics specific to a given session configuration. * @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 * @see android.hardware.camera2.CameraCharacteristics#getAvailableSessionCharacteristicsKeys */ @NonNull @FlaggedApi(Flags.FLAG_FEATURE_COMBINATION_QUERY) public CameraCharacteristics getSessionCharacteristics( @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 Loading @@ -1733,6 +1705,33 @@ public abstract class CameraDevice implements AutoCloseable { public abstract boolean isSessionConfigurationSupported( @NonNull SessionConfiguration config) throws CameraAccessException; /** * <p>Get camera characteristics for a particular session configuration for this camera * device</p> * * <p>The camera characteristics returned by this method are different from those returned * from {@link CameraManager#getCameraCharacteristics}. The characteristics returned here * reflect device capabilities more accurately if the device were to be configured with * {@code sessionConfig}. The keys that may get updated are listed in * {@link CameraCharacteristics#getAvailableSessionCharacteristicsKeys}.</p> * * <p>Other than that, the characteristics returned here can be used in the same way as * those returned from {@link CameraManager#getCameraCharacteristics}.</p> * * @param sessionConfig : The session configuration for which characteristics are fetched. * @return CameraCharacteristics specific to a given session configuration. * * @throws IllegalArgumentException if the session configuration is invalid * @throws CameraAccessException if the camera device is no longer connected or has * encountered a fatal error * * @see CameraCharacteristics#getAvailableSessionCharacteristicsKeys */ @NonNull @FlaggedApi(Flags.FLAG_CAMERA_DEVICE_SETUP) public abstract CameraCharacteristics getSessionCharacteristics( @NonNull SessionConfiguration sessionConfig) throws CameraAccessException; /** * Utility function to forward the call to * {@link CameraManager#openCamera(String, Executor, StateCallback)}. This function simply Loading
core/java/android/hardware/camera2/CameraManager.java +1 −2 Original line number Diff line number Diff line Loading @@ -772,8 +772,7 @@ public final class CameraManager { "CameraDeviceSetup is not supported for Camera ID: " + cameraId); } return new CameraDeviceSetupImpl(cameraId, /*cameraManager=*/ this, mContext.getApplicationInfo().targetSdkVersion); return new CameraDeviceSetupImpl(cameraId, /*cameraManager=*/ this, mContext); } /** Loading
core/java/android/hardware/camera2/impl/CameraDeviceImpl.java +0 −12 Original line number Diff line number Diff line Loading @@ -811,18 +811,6 @@ public class CameraDeviceImpl extends CameraDevice } } @Override public CameraCharacteristics getSessionCharacteristics( @NonNull SessionConfiguration sessionConfig) throws CameraAccessException, UnsupportedOperationException, IllegalArgumentException { synchronized (mInterfaceLock) { checkIfCameraClosedOrInError(); CameraMetadataNative info = mRemoteDevice.getSessionCharacteristics(sessionConfig); return new CameraCharacteristics(info); } } /** * For use by backwards-compatibility code only. */ Loading
core/java/android/hardware/camera2/impl/CameraDeviceSetupImpl.java +42 −2 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package android.hardware.camera2.impl; import android.annotation.CallbackExecutor; import android.annotation.FlaggedApi; import android.content.Context; import android.hardware.ICameraService; import android.hardware.camera2.CameraAccessException; import android.hardware.camera2.CameraCaptureSession; Loading @@ -40,15 +41,17 @@ import java.util.concurrent.Executor; public class CameraDeviceSetupImpl extends CameraDevice.CameraDeviceSetup { private final String mCameraId; private final CameraManager mCameraManager; private final Context mContext; private final int mTargetSdkVersion; private final Object mInterfaceLock = new Object(); public CameraDeviceSetupImpl(@NonNull String cameraId, @NonNull CameraManager cameraManager, int targetSdkVersion) { @NonNull Context context) { mCameraId = cameraId; mCameraManager = cameraManager; mTargetSdkVersion = targetSdkVersion; mContext = context; mTargetSdkVersion = context.getApplicationInfo().targetSdkVersion; } @NonNull Loading Loading @@ -110,6 +113,43 @@ public class CameraDeviceSetupImpl extends CameraDevice.CameraDeviceSetup { } } @NonNull @Override public CameraCharacteristics getSessionCharacteristics( @NonNull SessionConfiguration sessionConfig) throws CameraAccessException { synchronized (mInterfaceLock) { if (mCameraManager.isCameraServiceDisabled()) { throw new CameraAccessException(CameraAccessException.CAMERA_DISCONNECTED, "Camera service is currently disabled"); } ICameraService cameraService = mCameraManager.getCameraService(); if (cameraService == null) { throw new CameraAccessException(CameraAccessException.CAMERA_DISCONNECTED, "Camera service is currently unavailable"); } try { CameraMetadataNative metadataNative = cameraService.getSessionCharacteristics( mCameraId, mTargetSdkVersion, CameraManager.shouldOverrideToPortrait(mContext), sessionConfig); return new CameraCharacteristics(metadataNative); } catch (ServiceSpecificException e) { switch (e.errorCode) { case ICameraService.ERROR_INVALID_OPERATION -> throw new UnsupportedOperationException( "Session Characteristics Query not supported by device."); case ICameraService.ERROR_ILLEGAL_ARGUMENT -> throw new IllegalArgumentException("Invalid Session Configuration"); default -> throw ExceptionUtils.throwAsPublicException(e); } } catch (RemoteException e) { throw ExceptionUtils.throwAsPublicException(e); } } } @Override public void openCamera(@NonNull @CallbackExecutor Executor executor, @NonNull CameraDevice.StateCallback callback) throws CameraAccessException { Loading