Android 15 introduit le mode d'exposition automatique (AE) avec amplification de la luminosité, un nouveau mode d'exposition automatique disponible à la fois pour Camera 2 et l'extension de l'appareil photo en mode Nuit. Le mode AE avec amplification de la luminosité ajuste automatiquement la luminosité du flux d'aperçu en cas de faible luminosité. Cela diffère de la façon dont l'extension d'appareil photo du mode Nuit crée des images fixes, car le mode Nuit combine une rafale de photos pour créer une seule image améliorée. Bien que le mode Nuit soit très efficace pour créer une image fixe, il ne peut pas créer un flux continu d'images, contrairement au mode AE avec boost en basse lumière. Ainsi, le mode AE avec amplification de la luminosité vous permet d'accéder à de nouvelles fonctionnalités de l'appareil photo, comme les suivantes:
- Fournit un aperçu amélioré des images afin que les utilisateurs puissent mieux cadrer leurs photos prises en basse luminosité.
- Scanner des codes QR dans des conditions de faible luminosité
Si vous activez le mode AE avec boost en basse luminosité, il s'active automatiquement lorsque le niveau de luminosité est faible et se désactive lorsque la luminosité est plus élevée.
Les applications peuvent enregistrer le flux d'aperçu par faible luminosité dans le but d'éclaircir les vidéos.
Vous pouvez utiliser le mode AE avec amplification de la luminosité dans Camera2 ou via les extensions de l'appareil photo. Ce document explique comment utiliser le mode AE avec boost en basse luminosité avec Camera2. Vous pouvez également utiliser le mode AE avec amplification de la luminosité avec l'extension de l'appareil photo du mode Nuit si l'appareil est compatible.
Vérifier la disponibilité
Avant d'utiliser le mode AE avec boost faible luminosité, vérifiez qu'il est compatible avec l'appareil.
Si elle est disponible, l'option "Mode AE avec amplification de la luminosité faible" est l'un des modes d'exposition listés dans camera2.CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES
. (L'amplification de la luminosité est un paramètre d'exposition automatique, car les autres paramètres d'exposition automatique ne sont pas compatibles avec l'éclaircissement de l'aperçu effectué par le mode AE d'amplification de la luminosité.)
Pour vérifier si le mode AE avec boost en basse lumière est disponible, appelez CameraCharacteristics.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES)
et vérifiez si les modes renvoyés incluent ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY
:
Kotlin
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 }
Java
CameraCharacteristics characteristics = mCameraManager.getCameraCharacteristics(cameraId); int[] autoExposureModes = characteristics.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES); boolean 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 }
Activer le mode AE Boost faible luminosité
Pour activer le mode AE avec amplification de la luminosité dans une session Camera2, définissez CaptureRequest.CONTROL_AE_MODE
sur ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY
. Ensuite, vous devez vérifier que le mode AE avec boost en basse luminosité a été activé. Pour ce faire, cochez le champ CaptureResult.CONTROL_AE_MODE
. Vous devez le vérifier, car l'amplification de la luminosité n'est pas compatible avec toutes les configurations de caméra. Par exemple, l'enregistrement haute vitesse n'est pas compatible avec le mode AE Boost en basse lumière, en raison de considérations liées aux FPS. Si le mode AE avec boost en basse lumière n'est pas activé, vous devrez peut-être modifier la configuration de l'appareil photo et réessayer.
Kotlin
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 )
Java
CaptureRequest.Builder captureRequestBuilder = mCamera.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 mSession.setRepeatingRequest( captureRequestBuilder.build(), new CaptureCallback() { @Override public void onCaptureCompleted(CameraCaptureSession session, CaptureRequest request, TotalCaptureResult result) { // 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; } }, mCameraHandler );
Surveiller le mode AE avec amplification luminosité faible
Le mode AE Boost en basse luminosité éclaircit le flux d'aperçu par faible luminosité et n'a aucun effet si l'environnement est déjà suffisamment lumineux pour la capture normale. Vous pouvez vérifier si le mode AE Boost en basse lumière est actuellement actif en consultant le champ CaptureResult.CONTROL_LOW_LIGHT_BOOST_STATE
.
Si vous avez activé le mode AE avec boost faible luminosité et qu'il est actuellement actif, le champ est défini sur CameraMetadata.CONTROL_LOW_LIGHT_BOOST_STATE_ACTIVE
.
Vous pouvez ensuite afficher une icône en forme de lune ou un autre indicateur indiquant que l'aperçu est éclairci.
Kotlin
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 )
Java
mSession.setRepeatingRequest( captureRequestBuilder.build(), new CaptureCallback() { @Override public void onCaptureCompleted(CameraCaptureSession session, CaptureRequest request, TotalCaptureResult result) { // 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 } } }, mCameraHandler );