O Android 15 apresenta o Modo de exposição automática (AE) com Modo pouca luz refinado, uma nova opção de exposição automática disponível para a Camera 2 e a extensão de câmera do modo noturno. O modo AE de aumento do modo pouca luz ajusta automaticamente o brilho do stream de visualização em condições de pouca luz. Isso é diferente de como a extensão de câmera do modo noturno cria imagens estáticas, porque o modo noturno combina uma sequência de fotos para criar uma única imagem aprimorada. Embora o modo noturno funcione muito bem para criar uma imagem estática, ele não pode criar um fluxo contínuo de frames, mas o modo AE de otimização em pouca luz pode. Assim, o modo AE de otimização em pouca luz permite novos recursos de câmera, como:
- Oferecer uma prévia de imagem aprimorada para que os usuários possam enquadrar melhor as fotos com pouca luz.
- Ler QR codes em locais com pouca luz.
Se você ativar o modo AE de Otimização em Pouca Luz, ele será ativado automaticamente quando houver um nível de luz baixo e desativado quando houver mais luz.
Os apps podem gravar o fluxo de visualização em condições de pouca luz para salvar um vídeo mais claro.
É possível usar o modo AE de otimização em pouca luz na Camera2 ou com as extensões da câmera. Este documento aborda como usar o modo AE de otimização em pouca luz com a Camera2. Também é possível usar o modo AE de otimização de pouca luz com a extensão de câmera do modo noturno, se houver suporte no dispositivo.
Verificar disponibilidade
Antes de usar o modo AE de otimização em pouca luz, verifique se ele é compatível com o dispositivo.
Se estiver disponível, o modo AE de Modo Pouca Luz Refinado será um dos modos de exposição listados
em camera2.CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES. O Modo pouca luz refinado
é uma configuração de exposição automática própria, já que outras configurações de exposição automática
não são compatíveis com o clareamento de visualização realizado pelo modo AE
do Modo pouca luz refinado.
Para verificar se o modo AE de otimização de pouca luz está disponível, chame
CameraCharacteristics.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES)
e confira se os modos retornados incluem 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. }
Ativar o modo AE de aumento do modo pouca luz
Para ativar o modo AE de otimização em pouca luz em uma sessão da Camera2, defina
CaptureRequest.CONTROL_AE_MODE como
ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY. Depois disso, confirme se o modo AE de otimização em pouca luz foi ativado. Para isso, verifique o campo CaptureResult.CONTROL_AE_MODE. É preciso verificar, porque o recurso não é compatível com todas as configurações de câmera. Por exemplo,
a gravação em alta velocidade não é compatível com o modo AE de otimização em pouca luz devido a considerações
de QPS. Se o modo AE de otimização para pouca luz não estiver ativado, talvez seja necessário
mudar a configuração da câmera e tentar de novo.
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 )
Monitorar o modo AE de aumento do modo pouca luz
O modo AE de aumento do modo pouca luz clareia o fluxo de visualização em condições de pouca luz
e não tem efeito se o ambiente já estiver claro o suficiente para
uma captura normal. Para confirmar se o modo AE de otimização em pouca luz está ativo,
verifique o campo CaptureResult.CONTROL_LOW_LIGHT_BOOST_STATE.
Se você tiver ativado o modo AE de Otimização em Pouca Luz e ele estiver ativo, o
campo será definido como
CameraMetadata.CONTROL_LOW_LIGHT_BOOST_STATE_ACTIVE.
Em seguida, você pode mostrar um ícone de lua ou outra indicação de que a prévia está
sendo clareada.
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 )