Android 15 introduit la fonctionnalité Faible luminosité, un nouveau mode d'exposition automatique disponible pour à la caméra 2 et à l'extension de caméra du mode Nuit. Amplification par faible luminosité ajuste automatiquement la luminosité du flux d'aperçu par faible luminosité et conditions d'exploitation. Ce n'est pas la même chose que l'extension de caméra en mode Nuit des images fixes. En effet, le mode Nuit combine plusieurs photos en rafale pour créer image améliorée. Le mode Nuit est idéal pour créer des images fixes, ne peut pas créer un flux continu d'images, contrairement à l'amplification faible luminosité. Ainsi, L'optimisation par faible luminosité active de nouvelles fonctionnalités de l'appareil photo, par exemple:
- L'aperçu de l'image amélioré, qui permet aux utilisateurs de mieux cadrer leurs images et même par faible luminosité.
- Lecture de codes QR en cas de faible luminosité.
Si vous activez l'optimisation par faible luminosité, elle s'active automatiquement en cas de et s'éteint dès qu'il y a plus de lumière.
Les applications peuvent enregistrer hors du flux d'aperçu dans des conditions de faible luminosité pour éviter éclaircis la vidéo.
Vous pouvez utiliser l'amplification faible luminosité dans Camera2 ou via extensions d'appareil photo. Ce document explique comment utiliser l'amplification par faible luminosité avec Camera2. Vous pouvez également utiliser L'option "Faible luminosité" peut être utilisée avec l'extension d'appareil photo Mode Nuit, si elle est compatible avec le appareil.
Vérifier la disponibilité
Avant d'utiliser cette fonctionnalité, vérifiez qu'elle est compatible avec l'appareil. S'il s'agit
disponible, l'amplification faible luminosité est l'un des modes d'exposition répertoriés dans
camera2.CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES
(Faible luminosité
L'optimisation est un paramètre d'exposition automatique spécifique, puisque les autres paramètres d'exposition automatique
ne sont pas compatibles avec l'éclaircissement de l'aperçu effectué par l'amplification basse luminosité.)
Pour vérifier si l'option "Faible luminosité" 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 (next section) } else { // Proceed without Low Light Boost }
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 (next section) } else { // Proceed without Low Light Boost }
Activer l'amplification par faible luminosité
Pour activer l'amplification par faible luminosité dans une session Camera2, définissez
CaptureRequest.CONTROL_AE_MODE
jusqu'à
ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY
Ensuite, vous devrez
vérifiez que l'amplification faible luminosité est activée ; Pour ce faire, cochez la case
CaptureResult.CONTROL_AE_MODE
. Vous devez vérifier, car la luminosité est faible
La fonctionnalité Boost n'est pas compatible avec toutes les configurations de caméra. Par exemple, la vitesse
l'enregistrement n'est pas compatible avec l'amplification par faible luminosité, en raison des considérations liées au FPS. Si
L'amplification par faible luminosité n'est pas activée. Vous devrez peut-être changer de caméra
configuration, puis réessayez.
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 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 set successfully result.get(CaptureResult.CONTROL_AE_MODE) == CameraMetadata.CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY; } }, mCameraHandler );
Surveiller l'amplification par faible luminosité
La fonctionnalité d'optimisation par faible luminosité augmente la luminosité du flux d'aperçu dans des conditions de faible luminosité.
n'a aucun effet si l'environnement est déjà suffisamment lumineux pour une température normale
capture. Pour vérifier si l'optimisation par faible luminosité est activée, cochez
le champ CaptureResult.CONTROL_LOW_LIGHT_BOOST_STATE
. Si vous avez activé
Mode faible luminosité activé et actif actuellement, le champ défini sur
CameraMetadata.CONTROL_LOW_LIGHT_BOOST_STATE_ACTIVE
Vous pouvez ensuite afficher
l'icône de lune ou toute autre indication indiquant que l'aperçu est en cours d'éclaircissement.
Kotlin
session.setRepeatingRequest( captureRequestBuilder.build(), object : CaptureCallback() { @Override fun onCaptureCompleted(session: CameraCaptureSession, request: CaptureRequest, result: TotalCaptureResult) { // check if Low Light Boost is active or inactive if (result.get(CaptureResult.CONTROL_LOW_LIGHT_BOOST_STATE) == CameraMetadata.CONTROL_LOW_LIGHT_BOOST_STATE_ACTIVE) { // Low Light Boost state is active // Show Moon Icon } else { // Low Light Boost state is inactive or AE mode is not set // to Low Light Boost // 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 is active or inactive if (result.get(CaptureResult.CONTROL_LOW_LIGHT_BOOST_STATE) == CameraMetadata.CONTROL_LOW_LIGHT_BOOST_STATE_ACTIVE) { // Low Light Boost state is active // Show Moon Icon } else { // Low Light Boost state is inactive or AE mode is not set // to Low Light Boost // Hide Moon Icon } } }, mCameraHandler );