A partir de 27 de março de 2025, recomendamos usar android-latest-release
em vez de aosp-main
para criar e contribuir com o AOSP. Para mais informações, consulte Mudanças no AOSP.
Bokeh na câmera
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
O bokeh da câmera é um efeito de profundidade de campo rasa criado desfocando partes
de uma cena para que elas não fiquem em foco. Em câmeras de dispositivos móveis, o bokeh é
atingido usando informações de profundidade adquiridas da visão estéreo de duas
câmeras ou de dois fotodiodos (PDs) de uma única câmera.
A partir do Android 11, a plataforma Android
oferece suporte a implementações de bokeh e fornece APIs para disponibilizar o recurso
a apps de terceiros.
Implementação
Para disponibilizar o recurso de bokeh da câmera no seu dispositivo, faça o seguinte:
Anunciar ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES
:
Essa tag está no formato de uma matriz de tupla de três números inteiros, com cada tupla
no formato de {mode, maxWidth, maxHeight}
. Além de
{ANDROID_CONTROL_EXTENDED_SCENE_MODE_DISABLED, 0, 0}
, o HAL da câmera também precisa
listar um ou ambos os modos
ANDROID_CONTROL_EXTENDED_SCENE_MODE_BOKEH_STILL_CAPTURE
e
ANDROID_CONTROL_EXTENDED_SCENE_MODE_BOKEH_CONTINUOUS
com os
tamanhos de streaming máximos correspondentes.
Anunciar
ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_ZOOM_RATIO_RANGES
:
Essa tag está no formato de uma matriz {minZoomRatio, maxZoomRatio}
,
que contém todos os intervalos de proporção de zoom para um modo de cena estendida
ativado, na mesma ordem que em
ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES
. Um intervalo de zoom de
[1.0, 1.0]
significa que o zoom não é compatível.
Preencha ANDROID_CONTROL_USE_EXTENDED_SCENE_MODE
em
ANDROID_CONTROL_AVAILABLE_MODES
.
Para acionar o recurso de bokeh, o app precisa definir ANDROID_CONTROL_MODE
como ANDROID_CONTROL_USE_EXTENDED_SCENE_MODE
e
ANDROID_CONTROL_EXTENDED_SCENE_MODE
como um dos modos de cena estendidos compatíveis.
A implementação do bokeh pode levar a um consumo extra de memória devido à
computação estéreo.
Se um modo de cena estendida compatível não puder ser aplicado por frame e resultar em
atrasos inesperados quando ativado/desativado, inclua
ANDROID_CONTROL_EXTENDED_SCENE_MODE
em
ANDROID_REQUEST_AVAILABLE_SESSION_KEYS
. Ao mesmo tempo, implemente o
método ICameraDeviceSession::isReconfigurationRequired()
para evitar
a reconfiguração de modos de cena estendidos que não exigem isso.
Validação
Para validar o recurso de bokeh no dispositivo, execute os seguintes testes do CTS, VTS e
CTS Verifier:
CtsCameraTestCases
VtsHalCameraProviderV2_4TargetTest
CameraBokehTest
no CTS Verifier
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2025-07-26 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-07-26 UTC."],[],[],null,["# Camera bokeh is a shallow depth-of-field effect created by blurring out parts of\na scene so that they're not in focus. On cameras on mobile devices, bokeh is\nachieved using depth information acquired from the stereo vision from two\ncameras or from dual photodiodes (PDs) of a single camera.\n\nStarting from Android 11, the Android platform\nsupports bokeh implementations and provides APIs to make the feature available\nto third-party apps.\n\nImplementation\n--------------\n\nTo make the camera bokeh feature available on your device, do the following:\n\n- Advertise `ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES`:\n\n This tag is in the format of a three-integer tuple array, with each tuple\n in the format of `{mode, maxWidth, maxHeight}`. In addition to\n `{ANDROID_CONTROL_EXTENDED_SCENE_MODE_DISABLED, 0, 0}`, the camera HAL must\n also list one or both of the\n `ANDROID_CONTROL_EXTENDED_SCENE_MODE_BOKEH_STILL_CAPTURE` and\n `ANDROID_CONTROL_EXTENDED_SCENE_MODE_BOKEH_CONTINUOUS` modes with their\n corresponding maximum streaming sizes.\n- Advertise\n `ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_ZOOM_RATIO_RANGES`:\n\n This tag is in the format of a `{minZoomRatio, maxZoomRatio}` array,\n which contains all the zoom ratio ranges for an enabled extended scene\n mode, in the same order as in\n `ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES`. A zoom range of\n `[1.0, 1.0]` means that zoom isn't supported.\n- Populate `ANDROID_CONTROL_USE_EXTENDED_SCENE_MODE` in\n `ANDROID_CONTROL_AVAILABLE_MODES`.\n\nFor an app to trigger the bokeh feature, the app must set `ANDROID_CONTROL_MODE`\nto `ANDROID_CONTROL_USE_EXTENDED_SCENE_MODE` and\n`ANDROID_CONTROL_EXTENDED_SCENE_MODE` to one of supported extended scene modes.\nNote that implementing bokeh might lead to extra memory consumption because of\nstereo computation.\n\nIf a supported extended scene mode can't be applied per frame and results in\nunexpected delays when enabled/disabled, include\n`ANDROID_CONTROL_EXTENDED_SCENE_MODE` in\n`ANDROID_REQUEST_AVAILABLE_SESSION_KEYS`. At the same time, implement the\n`ICameraDeviceSession::isReconfigurationRequired()` method to avoid\nreconfiguration for extended scene modes that don't require reconfiguration.\n\nValidation\n----------\n\nTo validate the bokeh feature on your device, run the following CTS, VTS, and\nCTS Verifier tests:\n\n- `CtsCameraTestCases`\n- `VtsHalCameraProviderV2_4TargetTest`\n- `CameraBokehTest` in CTS Verifier"]]