Android 15 presenta el modo de exposición automática (AE) de potenciador de poca luz, un nuevo modo de exposición automática disponible para Camera 2 y la extensión de cámara del modo nocturno. El modo AE de mejora con poca luz ajusta automáticamente el brillo del flujo de vista previa en condiciones de poca luz. Esto es diferente de cómo la extensión de la cámara del modo nocturno crea imágenes fijas, ya que el modo nocturno combina una ráfaga de fotos para crear una sola imagen mejorada. Si bien el modo nocturno funciona muy bien para crear una imagen fija, no puede crear una transmisión continua de fotogramas, pero el modo de AE de optimización con poca luz sí puede hacerlo. Por lo tanto, el modo de AE de mejora con poca luz habilita nuevas funciones de la cámara, como las siguientes:
- Proporcionar una vista previa de imagen mejorada para que los usuarios puedan encuadrar mejor sus fotos con poca luz
- Escaneo de códigos QR con poca luz
Si habilitas el modo de AE de mejora con poca luz, se activará automáticamente cuando haya un nivel de luz bajo y se desactivará cuando haya más luz.
Las apps pueden grabar desde el flujo de vista previa en condiciones de poca luz para guardar un video con más brillo.
Puedes usar el modo de AE de Low Light Boost en Camera2 o a través de las extensiones de la cámara. En este documento, se explica cómo usar el modo de AE de mejora con poca luz con Camera2. También puedes usar el modo de AE de mejora con poca luz con la extensión de cámara del modo nocturno si el dispositivo lo admite.
Consulta la disponibilidad
Antes de usar el modo AE de Low Light Boost, verifica que sea compatible con el dispositivo.
Si está disponible, el modo AE de mejora con poca luz es uno de los modos de exposición que se indican en camera2.CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES. (La mejora con poca luz tiene su propio parámetro de configuración de exposición automática, ya que otros parámetros de configuración de exposición automática no son compatibles con el brillo de la vista previa que realiza el modo de exposición automática de la mejora con poca luz).
Por lo tanto, para verificar si el modo de AE de mejora con poca luz está disponible, llama a CameraCharacteristics.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES) y verifica si los modos que se muestran incluyen ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY:
val characteristics = cameraManager.getCameraCharacteristics(cameraId) val autoExposureModes = characteristics.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES)!! val lowLightBoostSupported = autoExposureModes.contains( CameraMetadata.CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY ) if (lowLightBoostSupported) { // Enable Low Light Boost AE Mode (next section). } else { // Proceed without Low Light Boost AE Mode. }
Habilita el modo de AE de mejora con poca luz
Para habilitar el modo de AE de mejora con poca luz en una sesión de Camera2, establece CaptureRequest.CONTROL_AE_MODE en ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY. Después de hacerlo, deberás confirmar que se activó el modo de AE de mejora con poca luz. Para ello, verifica el campo CaptureResult.CONTROL_AE_MODE. Debes verificarlo porque la función de Optimización con poca luz no es compatible con todas las configuraciones de la cámara. Por ejemplo,
la grabación de alta velocidad no admite el modo de AE de mejora con poca luz debido a consideraciones
de FPS. Si el modo AE de mejora con poca luz no está activado, es posible que debas cambiar la configuración de la cámara y volver a intentarlo.
val captureRequestBuilder = camera.createCaptureRequest( CameraDevice.TEMPLATE_PREVIEW ) if (isLowLightBoostAvailable(cameraId)) { captureRequestBuilder.set( CaptureRequest.CONTROL_AE_MODE, CameraMetadata.CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY ) } // other capture request params. session.setRepeatingRequest( captureRequestBuilder.build(), object : CaptureCallback() { override fun onCaptureCompleted( session: CameraCaptureSession, request: CaptureRequest, result: TotalCaptureResult ) { // verify Low Light Boost AE Mode AE mode set successfully. result.get(CaptureResult.CONTROL_AE_MODE) == CameraMetadata.CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY } }, cameraHandler )
Supervisa el modo AE de mejora con poca luz
El modo AE de mejora con poca luz aumenta el brillo de la transmisión de vista previa en condiciones de poca luz y no tiene ningún efecto si el entorno ya es lo suficientemente brillante para la captura normal. Puedes confirmar si el modo de AE de mejora con poca luz está activo en este momento. Para ello, verifica el campo CaptureResult.CONTROL_LOW_LIGHT_BOOST_STATE.
Si activaste el modo de AE de mejora con poca luz y está activo, el campo se establece en CameraMetadata.CONTROL_LOW_LIGHT_BOOST_STATE_ACTIVE.
Luego, puedes mostrar un ícono de luna o alguna otra indicación de que se está aumentando el brillo de la vista previa.
session.setRepeatingRequest( captureRequestBuilder.build(), object : CaptureCallback() { override fun onCaptureCompleted( session: CameraCaptureSession, request: CaptureRequest, result: TotalCaptureResult ) { // check if Low Light Boost AE Mode is active or inactive. if (result.get(CaptureResult.CONTROL_LOW_LIGHT_BOOST_STATE) == CameraMetadata.CONTROL_LOW_LIGHT_BOOST_STATE_ACTIVE ) { // Low Light Boost AE Mode state is active. // Show Moon Icon. } else { // Low Light Boost AE Mode state is inactive or AE mode is not set // to Low Light Boost AE Mode. // Hide Moon Icon. } } }, cameraHandler )