CameraManager
  public
  
  final
  
  class
  CameraManager
  
    extends Object
  
  
  
  
  
  
| java.lang.Object | |
| ↳ | android.hardware.camera2.CameraManager | 
A system service manager for detecting, characterizing, and connecting to
 CameraDevices.
For more details about communicating with camera devices, read the Camera
 developer guide or the camera2
 package documentation.
Summary
| Nested classes | |
|---|---|
| 
        
        
        
        
        class | CameraManager.AvailabilityCallbackA callback for camera devices becoming available or unavailable to open. | 
| 
        
        
        
        
        class | CameraManager.TorchCallbackA callback for camera flash torch modes becoming unavailable, disabled, or enabled. | 
| Public methods | |
|---|---|
| 
        
        
        
        
        
        CameraCharacteristics | 
      getCameraCharacteristics(String cameraId)
      Query the capabilities of a camera device. | 
| 
        
        
        
        
        
        CameraDevice.CameraDeviceSetup | 
      getCameraDeviceSetup(String cameraId)
      Returns a  | 
| 
        
        
        
        
        
        CameraExtensionCharacteristics | 
      getCameraExtensionCharacteristics(String cameraId)
      Query the camera extension capabilities of a camera device. | 
| 
        
        
        
        
        
        String[] | 
      getCameraIdList()
      Return the list of currently connected camera devices by identifier, including cameras that may be in use by other camera API clients. | 
| 
        
        
        
        
        
        Set<Set<String>> | 
      getConcurrentCameraIds()
      Return the set of combinations of currently connected camera device identifiers, which support configuring camera device sessions concurrently. | 
| 
        
        
        
        
        
        int | 
      getTorchStrengthLevel(String cameraId)
      Returns the brightness level of the flash unit associated with the cameraId. | 
| 
        
        
        
        
        
        boolean | 
      isCameraDeviceSetupSupported(String cameraId)
      Checks a Camera Device's characteristics to ensure that a
  | 
| 
        
        
        
        
        
        boolean | 
      isConcurrentSessionConfigurationSupported(Map<String, SessionConfiguration> cameraIdAndSessionConfig)
      Checks whether the provided set of camera devices and their corresponding
  | 
| 
        
        
        
        
        
        void | 
      openCamera(String cameraId, CameraDevice.StateCallback callback, Handler handler)
      Open a connection to a camera with the given ID. | 
| 
        
        
        
        
        
        void | 
      openCamera(String cameraId, Executor executor, CameraDevice.StateCallback callback)
      Open a connection to a camera with the given ID. | 
| 
        
        
        
        
        
        void | 
      registerAvailabilityCallback(Executor executor, CameraManager.AvailabilityCallback callback)
      Register a callback to be notified about camera device availability. | 
| 
        
        
        
        
        
        void | 
      registerAvailabilityCallback(CameraManager.AvailabilityCallback callback, Handler handler)
      Register a callback to be notified about camera device availability. | 
| 
        
        
        
        
        
        void | 
      registerTorchCallback(Executor executor, CameraManager.TorchCallback callback)
      Register a callback to be notified about torch mode status. | 
| 
        
        
        
        
        
        void | 
      registerTorchCallback(CameraManager.TorchCallback callback, Handler handler)
      Register a callback to be notified about torch mode status. | 
| 
        
        
        
        
        
        void | 
      setTorchMode(String cameraId, boolean enabled)
      Set the flash unit's torch mode of the camera of the given ID without opening the camera device. | 
| 
        
        
        
        
        
        void | 
      turnOnTorchWithStrengthLevel(String cameraId, int torchStrength)
      Set the brightness level of the flashlight associated with the given cameraId in torch mode. | 
| 
        
        
        
        
        
        void | 
      unregisterAvailabilityCallback(CameraManager.AvailabilityCallback callback)
      Remove a previously-added callback; the callback will no longer receive connection and disconnection callbacks. | 
| 
        
        
        
        
        
        void | 
      unregisterTorchCallback(CameraManager.TorchCallback callback)
      Remove a previously-added callback; the callback will no longer receive torch mode status callbacks. | 
| Inherited methods | |
|---|---|
Public methods
getCameraCharacteristics
public CameraCharacteristics getCameraCharacteristics (String cameraId)
Query the capabilities of a camera device. These capabilities are immutable for a given camera.
From API level 29, this function can also be used to query the capabilities of physical
 cameras that can only be used as part of logical multi-camera. These cameras cannot be
 opened directly via openCamera(String, StateCallback, Handler)
Also starting with API level 29, while most basic camera information is still available
 even without the CAMERA permission, some values are not available to apps that do not hold
 that permission. The keys not available are listed by
 CameraCharacteristics.getKeysNeedingPermission.
| Parameters | |
|---|---|
| cameraId | String: The id of the camera device to query. This could be either a standalone
 camera ID which can be directly opened byopenCamera(String, StateCallback, Handler), or a physical camera ID that
 can only used as part of a logical multi-camera.
 This value cannot benull. | 
| Returns | |
|---|---|
| CameraCharacteristics | The properties of the given camera
 This value cannot be null. | 
| Throws | |
|---|---|
| IllegalArgumentException | if the cameraId does not match any known camera device. | 
| CameraAccessException | if the camera device has been disconnected. | 
getCameraDeviceSetup
public CameraDevice.CameraDeviceSetup getCameraDeviceSetup (String cameraId)
Returns a CameraDevice.CameraDeviceSetup object for the given cameraId,
 which provides limited access to CameraDevice setup and query functionality without
 requiring an openCamera(String, StateCallback, Handler) call. The CameraDevice can later be obtained either
 by calling openCamera(String, StateCallback, Handler), or CameraDevice.CameraDeviceSetup.openCamera.
 
Support for CameraDevice.CameraDeviceSetup for a given cameraId must be
 checked with isCameraDeviceSetupSupported(String). If isCameraDeviceSetupSupported
 returns false for a cameraId, this method will throw an
 UnsupportedOperationException
| Parameters | |
|---|---|
| cameraId | String: The unique identifier of the camera device for whichCameraDevice.CameraDeviceSetupobject must be constructed. This
                 identifier must be present ingetCameraIdList()This value cannot benull. | 
| Returns | |
|---|---|
| CameraDevice.CameraDeviceSetup | CameraDevice.CameraDeviceSetupobject corresponding to the providedcameraIdThis value cannot benull. | 
| Throws | |
|---|---|
| IllegalArgumentException | If cameraIdis null, or ifcameraIddoes not
 match any device ingetCameraIdList(). | 
| CameraAccessException | if the camera device is not accessible | 
| UnsupportedOperationException | if CameraDevice.CameraDeviceSetupinstance
 cannot be constructed for the givencameraId, i.e.isCameraDeviceSetupSupported(String)returns false. | 
getCameraExtensionCharacteristics
public CameraExtensionCharacteristics getCameraExtensionCharacteristics (String cameraId)
Query the camera extension capabilities of a camera device.
| Parameters | |
|---|---|
| cameraId | String: The id of the camera device to query. This must be a standalone
 camera ID which can be directly opened byopenCamera(String, StateCallback, Handler).
 This value cannot benull. | 
| Returns | |
|---|---|
| CameraExtensionCharacteristics | The properties of the given camera
 This value cannot be null. | 
| Throws | |
|---|---|
| IllegalArgumentException | if the cameraId does not match any known camera device. | 
| CameraAccessException | if the camera device has been disconnected. | 
getCameraIdList
public String[] getCameraIdList ()
Return the list of currently connected camera devices by identifier, including cameras that may be in use by other camera API clients.
Non-removable cameras use integers starting at 0 for their identifiers, while removable cameras have a unique identifier for each individual device, even if they are the same model.
This list doesn't contain physical cameras that can only be used as part of a logical multi-camera device.
| Returns | |
|---|---|
| String[] | The list of currently connected camera devices.
 This value cannot be null. | 
| Throws | |
|---|---|
| CameraAccessException | |
getConcurrentCameraIds
public Set<Set<String>> getConcurrentCameraIds ()
Return the set of combinations of currently connected camera device identifiers, which support configuring camera device sessions concurrently.
The devices in these combinations can be concurrently configured by the same client camera application. Using these camera devices concurrently by two different applications is not guaranteed to be supported, however.
For concurrent operation, in chronological order :
-  Applications must first close any open cameras that have sessions configured, using
   CameraDevice.close.
-  All camera devices intended to be operated concurrently, must be opened using
   openCamera(String, StateCallback, Handler), before configuring sessions on any of the camera devices.
Each device in a combination, is guaranteed to support stream combinations which may be
 obtained by querying getCameraCharacteristics(String) for the key
 CameraCharacteristics.SCALER_MANDATORY_CONCURRENT_STREAM_COMBINATIONS.
For concurrent operation, if a camera device has a non null zoom ratio range as specified
 by
 CameraCharacteristics.CONTROL_ZOOM_RATIO_RANGE,
 its complete zoom ratio range may not apply. Applications can use
 CaptureRequest.CONTROL_ZOOM_RATIO >=1 and  <=
 CameraCharacteristics.SCALER_AVAILABLE_MAX_DIGITAL_ZOOM
 during concurrent operation.
 
The set of combinations may include camera devices that may be in use by other camera API clients.
Concurrent camera extension sessions CameraExtensionSession are not currently
 supported.
The set of combinations doesn't contain physical cameras that can only be used as part of a logical multi-camera device.
 If a new camera id becomes available through
 AvailabilityCallback.onCameraUnavailable(String), clients can call
 this method to check if new combinations of camera ids which can stream concurrently are
 available.
| Returns | |
|---|---|
| Set<Set<String>> | The set of combinations of currently connected camera devices, that may have sessions configured concurrently. The set of combinations will be empty if no such combinations are supported by the camera subsystem. | 
| Throws | |
|---|---|
| CameraAccessException | if the camera device has been disconnected. | 
getTorchStrengthLevel
public int getTorchStrengthLevel (String cameraId)
Returns the brightness level of the flash unit associated with the cameraId.
| Parameters | |
|---|---|
| cameraId | String: The unique identifier of the camera device that the flash unit belongs to.
 This value cannot benull. | 
| Returns | |
|---|---|
| int | The brightness level of the flash unit associated with cameraId.
         When the torch is turned OFF, the strength level will reset to a default level CameraCharacteristics.FLASH_INFO_STRENGTH_DEFAULT_LEVEL.
         In this case the return value will beCameraCharacteristics.FLASH_INFO_STRENGTH_DEFAULT_LEVELrather than 0. | 
| Throws | |
|---|---|
| CameraAccessException | if it failed to access the flash unit. | 
| IllegalArgumentException | if cameraId was null, cameraId doesn't match any currently or previously available camera device, or the camera device doesn't have a flash unit. | 
isCameraDeviceSetupSupported
public boolean isCameraDeviceSetupSupported (String cameraId)
Checks a Camera Device's characteristics to ensure that a
 CameraDevice.CameraDeviceSetup instance can be constructed for a given
 cameraId. If this method returns false for a cameraId, calling
 getCameraDeviceSetup(String) for that cameraId will throw an
 UnsupportedOperationException.
 
CameraDevice.CameraDeviceSetup is supported for all devices that report
 CameraCharacteristics.INFO_SESSION_CONFIGURATION_QUERY_VERSION >
 Build.VERSION_CODES.UPSIDE_DOWN_CAKE
| Parameters | |
|---|---|
| cameraId | String: The unique identifier of the camera device for whichCameraDevice.CameraDeviceSetupsupport is being queried. This
                 identifier must be present ingetCameraIdList().
 This value cannot benull. | 
| Returns | |
|---|---|
| boolean | trueifCameraDevice.CameraDeviceSetupobject can be constructed
 for the providedcameraId;falseotherwise. | 
| Throws | |
|---|---|
| IllegalArgumentException | If cameraIdis null, or ifcameraIddoes not
                                  match any device ingetCameraIdList(). | 
| CameraAccessException | if the camera device is not accessible | 
isConcurrentSessionConfigurationSupported
public boolean isConcurrentSessionConfigurationSupported (Map<String, SessionConfiguration> cameraIdAndSessionConfig)
Checks whether the provided set of camera devices and their corresponding
 SessionConfiguration can be configured concurrently.
 
This method performs a runtime check of the given SessionConfiguration and camera
 id combinations. The result confirms whether or not the passed session configurations can be
 successfully used to create camera capture sessions concurrently, on the given camera
 devices using CameraDevice.createCaptureSession(SessionConfiguration).
 
The method can be called at any point before, during and after active capture sessions. It will not impact normal camera behavior in any way and must complete significantly faster than creating a regular or constrained capture session.
Although this method is faster than creating a new capture session, it is not intended
 to be used for exploring the entire space of supported concurrent stream combinations. The
 available mandatory concurrent stream combinations may be obtained by querying
 getCameraCharacteristics(String) for the key
 CameraCharacteristics.SCALER_MANDATORY_CONCURRENT_STREAM_COMBINATIONS. 
Note that session parameters will be ignored and calls to
 SessionConfiguration.setSessionParameters are not required.
Requires
Manifest.permission.CAMERA
    | Parameters | |
|---|---|
| cameraIdAndSessionConfig | Map: This value cannot benull. | 
| Returns | |
|---|---|
| boolean | trueif the given combination of session configurations and corresponding
                      camera ids are concurrently supported by the camera sub-system,falseotherwise OR if the set of camera devices provided is not a subset of
                       those returned bygetConcurrentCameraIds(). | 
| Throws | |
|---|---|
| CameraAccessException | if one of the camera devices queried is no longer connected. | 
openCamera
public void openCamera (String cameraId, CameraDevice.StateCallback callback, Handler handler)
Open a connection to a camera with the given ID.
Use getCameraIdList() to get the list of available camera
 devices. Note that even if an id is listed, open may fail if the device
 is disconnected between the calls to getCameraIdList() and
 openCamera(String, StateCallback, Handler), or if a higher-priority camera API client begins using the
 camera device.
As of API level 23, devices for which the
 AvailabilityCallback.onCameraUnavailable(String) callback has been called due to the
 device being in use by a lower-priority, background camera API client can still potentially
 be opened by calling this method when the calling camera API client has a higher priority
 than the current camera API client using this device.  In general, if the top, foreground
 activity is running within your application process, your process will be given the highest
 priority when accessing the camera, and this method will succeed even if the camera device is
 in use by another camera API client. Any lower-priority application that loses control of the
 camera in this way will receive an
 CameraDevice.StateCallback.onDisconnected(CameraDevice) callback.
 Opening the same camera ID twice in the same application will similarly cause the
 CameraDevice.StateCallback.onDisconnected(CameraDevice) callback
 being fired for the CameraDevice from the first open call and all ongoing tasks
 being dropped.
Once the camera is successfully opened, CameraDevice.StateCallback.onOpened will
 be invoked with the newly opened CameraDevice. The camera device can then be set up
 for operation by calling CameraDevice.createCaptureSession and
 CameraDevice.createCaptureRequest
Before API level 30, when the application tries to open multiple CameraDevice of
 different IDs and the device does not support opening such combination, either the
 openCamera(String, StateCallback, Handler) will fail and throw a CameraAccessException or one or more of
 already opened CameraDevice will be disconnected and receive
 CameraDevice.StateCallback.onDisconnected(CameraDevice) callback. Which
 behavior will happen depends on the device implementation and can vary on different devices.
 Starting in API level 30, if the device does not support the combination of cameras being
 opened, it is guaranteed the openCamera(String, StateCallback, Handler) call will fail and none of existing
 CameraDevice will be disconnected.
If the camera becomes disconnected during initialization
 after this function call returns,
 CameraDevice.StateCallback.onDisconnected with a
 CameraDevice in the disconnected state (and
 CameraDevice.StateCallback.onOpened will be skipped).
If opening the camera device fails, then the device callback's
 onError method will be called, and subsequent
 calls on the camera device will throw a CameraAccessException.
Requires
Manifest.permission.CAMERA
    | Parameters | |
|---|---|
| cameraId | String: The unique identifier of the camera device to open
 This value cannot benull. | 
| callback | CameraDevice.StateCallback: The callback which is invoked once the camera is opened
 This value cannot benull. | 
| handler | Handler: The handler on which the callback should be invoked, ornullto use the current thread'slooper. | 
| Throws | |
|---|---|
| CameraAccessException | if the camera is disabled by device policy, has been disconnected, is being used by a higher-priority camera API client, or the device has reached its maximal resource and cannot open this camera device. | 
| IllegalArgumentException | if cameraId or the callback was null,
 or the cameraId does not match any currently or previously available
 camera device returned by getCameraIdList(). | 
| SecurityException | if the application does not have permission to access the camera | 
openCamera
public void openCamera (String cameraId, Executor executor, CameraDevice.StateCallback callback)
Open a connection to a camera with the given ID.
The behavior of this method matches that of
 openCamera(java.lang.String, android.hardware.camera2.CameraDevice.StateCallback, android.os.Handler), except that it uses
 Executor as an argument instead of
 Handler.
Do note that typically callbacks are expected to be dispatched by the executor in a single thread. If the executor uses two or more threads to dispatch callbacks, then clients must ensure correct synchronization and must also be able to handle potentially different ordering of the incoming callbacks.
Requires
Manifest.permission.CAMERA
    | Parameters | |
|---|---|
| cameraId | String: The unique identifier of the camera device to open
 This value cannot benull. | 
| executor | Executor: The executor which will be used when invoking the callback.
 This value cannot benull.
 Callback and listener events are dispatched through thisExecutor, providing an easy way to control which thread is
 used. To dispatch events through the main thread of your
 application, you can useContext.getMainExecutor().
 Otherwise, provide anExecutorthat dispatches to an appropriate thread. | 
| callback | CameraDevice.StateCallback: The callback which is invoked once the camera is opened
 This value cannot benull. | 
| Throws | |
|---|---|
| CameraAccessException | if the camera is disabled by device policy, has been disconnected, or is being used by a higher-priority camera API client. | 
| IllegalArgumentException | if cameraId, the callback or the executor was null, or the cameraId does not match any currently or previously available camera device. | 
| SecurityException | if the application does not have permission to access the camera | 
registerAvailabilityCallback
public void registerAvailabilityCallback (Executor executor, CameraManager.AvailabilityCallback callback)
Register a callback to be notified about camera device availability.
The behavior of this method matches that of
 registerAvailabilityCallback(android.hardware.camera2.CameraManager.AvailabilityCallback, android.os.Handler),
 except that it uses Executor as an argument
 instead of Handler.
Note: If the order between some availability callbacks matters, the implementation of the executor should handle those callbacks in the same thread to maintain the callbacks' order. Some examples are:
- AvailabilityCallback.onCameraAvailableand- AvailabilityCallback.onCameraUnavailableof the same camera ID.
- AvailabilityCallback.onCameraAvailableor- AvailabilityCallback.onCameraUnavailableof a logical multi-camera, and- CameraManager.AvailabilityCallback.onPhysicalCameraUnavailable(String, String)or- AvailabilityCallback.onPhysicalCameraAvailableof its physical cameras.
| Parameters | |
|---|---|
| executor | Executor: The executor which will be used to invoke the callback.
 This value cannot benull.
 Callback and listener events are dispatched through thisExecutor, providing an easy way to control which thread is
 used. To dispatch events through the main thread of your
 application, you can useContext.getMainExecutor().
 Otherwise, provide anExecutorthat dispatches to an appropriate thread. | 
| callback | CameraManager.AvailabilityCallback: the new callback to send camera availability notices to
 This value cannot benull. | 
| Throws | |
|---|---|
| IllegalArgumentException | if the executor is null. | 
registerAvailabilityCallback
public void registerAvailabilityCallback (CameraManager.AvailabilityCallback callback, Handler handler)
Register a callback to be notified about camera device availability.
Registering the same callback again will replace the handler with the new one provided.
The first time a callback is registered, it is immediately called with the availability status of all currently known camera devices.
AvailabilityCallback.onCameraUnavailable(String) will be called whenever a camera
 device is opened by any camera API client. As of API level 23, other camera API clients may
 still be able to open such a camera device, evicting the existing client if they have higher
 priority than the existing client of a camera device. See open() for more details.
Since this callback will be registered with the camera service, remember to unregister it once it is no longer needed; otherwise the callback will continue to receive events indefinitely and it may prevent other resources from being released. Specifically, the callbacks will be invoked independently of the general activity lifecycle and independently of the state of individual CameraManager instances.
| Parameters | |
|---|---|
| callback | CameraManager.AvailabilityCallback: the new callback to send camera availability notices to
 This value cannot benull. | 
| handler | Handler: The handler on which the callback should be invoked, ornullto use
             the current thread'slooper. | 
| Throws | |
|---|---|
| IllegalArgumentException | if the handler is nullbut the current thread has
             no looper. | 
registerTorchCallback
public void registerTorchCallback (Executor executor, CameraManager.TorchCallback callback)
Register a callback to be notified about torch mode status.
The behavior of this method matches that of
 registerTorchCallback(android.hardware.camera2.CameraManager.TorchCallback, android.os.Handler),
 except that it uses Executor as an argument
 instead of Handler.
| Parameters | |
|---|---|
| executor | Executor: The executor which will be used to invoke the callback
 This value cannot benull.
 Callback and listener events are dispatched through thisExecutor, providing an easy way to control which thread is
 used. To dispatch events through the main thread of your
 application, you can useContext.getMainExecutor().
 Otherwise, provide anExecutorthat dispatches to an appropriate thread. | 
| callback | CameraManager.TorchCallback: The new callback to send torch mode status to
 This value cannot benull. | 
| Throws | |
|---|---|
| IllegalArgumentException | if the executor is null. | 
registerTorchCallback
public void registerTorchCallback (CameraManager.TorchCallback callback, Handler handler)
Register a callback to be notified about torch mode status.
Registering the same callback again will replace the handler with the new one provided.
The first time a callback is registered, it is immediately called with the torch mode status of all currently known camera devices with a flash unit.
Since this callback will be registered with the camera service, remember to unregister it once it is no longer needed; otherwise the callback will continue to receive events indefinitely and it may prevent other resources from being released. Specifically, the callbacks will be invoked independently of the general activity lifecycle and independently of the state of individual CameraManager instances.
| Parameters | |
|---|---|
| callback | CameraManager.TorchCallback: The new callback to send torch mode status to
 This value cannot benull. | 
| handler | Handler: The handler on which the callback should be invoked, ornullto use
             the current thread'slooper. | 
| Throws | |
|---|---|
| IllegalArgumentException | if the handler is nullbut the current thread has
             no looper. | 
setTorchMode
public void setTorchMode (String cameraId, boolean enabled)
Set the flash unit's torch mode of the camera of the given ID without opening the camera device.
Use getCameraIdList() to get the list of available camera devices and use
 getCameraCharacteristics(String) to check whether the camera device has a flash unit.
 Note that even if a camera device has a flash unit, turning on the torch mode may fail
 if the camera device or other camera resources needed to turn on the torch mode are in use.
 
 If setTorchMode(String, boolean) is called to turn on or off the torch mode successfully,
 CameraManager.TorchCallback.onTorchModeChanged will be invoked.
 However, even if turning on the torch mode is successful, the application does not have the
 exclusive ownership of the flash unit or the camera device. The torch mode will be turned
 off and becomes unavailable when the camera device that the flash unit belongs to becomes
 unavailable or when other camera resources to keep the torch on become unavailable (
 CameraManager.TorchCallback.onTorchModeUnavailable will be invoked). Also,
 other applications are free to call setTorchMode(String, boolean) to turn off the torch mode (
 CameraManager.TorchCallback.onTorchModeChanged will be invoked). If the latest
 application that turned on the torch mode exits, the torch mode will be turned off.
| Parameters | |
|---|---|
| cameraId | String: The unique identifier of the camera device that the flash unit belongs to.
 This value cannot benull. | 
| enabled | boolean: The desired state of the torch mode for the target camera device. Set totrueto turn on the torch mode. Set tofalseto turn off the
             torch mode. | 
| Throws | |
|---|---|
| CameraAccessException | if it failed to access the flash unit. CameraAccessException.CAMERA_IN_USEwill be thrown if the camera device
             is in use.CameraAccessException.MAX_CAMERAS_IN_USEwill be thrown if
             other camera resources needed to turn on the torch mode are in use.CameraAccessException.CAMERA_DISCONNECTEDwill be thrown if camera
             service is not available. | 
| IllegalArgumentException | if cameraId was null, cameraId doesn't match any currently or previously available camera device, or the camera device doesn't have a flash unit. | 
turnOnTorchWithStrengthLevel
public void turnOnTorchWithStrengthLevel (String cameraId, int torchStrength)
Set the brightness level of the flashlight associated with the given cameraId in torch mode. If the torch is OFF and torchStrength is >= 1, torch will turn ON with the strength level specified in torchStrength.
Use
 CameraCharacteristics.FLASH_INFO_STRENGTH_MAXIMUM_LEVEL
 to check whether the camera device supports flash unit strength control or not. If this value
 is greater than 1, applications can call this API to control the flashlight brightness level.
 
If turnOnTorchWithStrengthLevel(String, int) is called to change the brightness level of the
 flash unit CameraManager.TorchCallback.onTorchStrengthLevelChanged will be invoked.
 If the new desired strength level is same as previously set level, then this callback will
 not be invoked.
 If the torch is OFF and turnOnTorchWithStrengthLevel(String, int) is called with level >= 1,
 the torch will be turned ON with that brightness level. In this case
 CameraManager.TorchCallback.onTorchModeChanged will also be invoked.
 
When the torch is turned OFF via setTorchMode(String, boolean), the flashlight brightness level
 will reset to default value
 CameraCharacteristics.FLASH_INFO_STRENGTH_DEFAULT_LEVEL
 In this case the CameraManager.TorchCallback.onTorchStrengthLevelChanged will not be
 invoked.
 
If torch is enabled via setTorchMode(String, boolean) after calling
 turnOnTorchWithStrengthLevel(String, int) with level N then the flash unit will have the
 brightness level N.
 Since multiple applications are free to call setTorchMode(String, boolean), when the latest
 application that turned ON the torch mode exits, the torch mode will be turned OFF
 and in this case the brightness level will reset to default level.
 
| Parameters | |
|---|---|
| cameraId | String: The unique identifier of the camera device that the flash unit belongs to.
 This value cannot benull. | 
| torchStrength | int: The desired brightness level to be set for the flash unit in the range 1 toCameraCharacteristics.FLASH_INFO_STRENGTH_MAXIMUM_LEVEL. | 
| Throws | |
|---|---|
| CameraAccessException | if it failed to access the flash unit. CameraAccessException.CAMERA_IN_USEwill be thrown if the camera device
             is in use.CameraAccessException.MAX_CAMERAS_IN_USEwill be thrown if
             other camera resources needed to turn on the torch mode are in use.CameraAccessException.CAMERA_DISCONNECTEDwill be thrown if camera
             service is not available. | 
| IllegalArgumentException | if cameraId was null, cameraId doesn't match any currently
              or previously available camera device, the camera device doesn't have a
              flash unit or if torchStrength is not within the range i.e. is greater than
              the maximum level CameraCharacteristics.FLASH_INFO_STRENGTH_MAXIMUM_LEVELor <= 0. | 
unregisterAvailabilityCallback
public void unregisterAvailabilityCallback (CameraManager.AvailabilityCallback callback)
Remove a previously-added callback; the callback will no longer receive connection and disconnection callbacks.
Removing a callback that isn't registered has no effect.
| Parameters | |
|---|---|
| callback | CameraManager.AvailabilityCallback: The callback to remove from the notification list
 This value cannot benull. | 
unregisterTorchCallback
public void unregisterTorchCallback (CameraManager.TorchCallback callback)
Remove a previously-added callback; the callback will no longer receive torch mode status callbacks.
Removing a callback that isn't registered has no effect.
| Parameters | |
|---|---|
| callback | CameraManager.TorchCallback: The callback to remove from the notification list
 This value cannot benull. | 
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2025-02-10 UTC.
