A partir del 27 de marzo de 2025, te recomendamos que uses android-latest-release
en lugar de aosp-main
para compilar y contribuir a AOSP. Para obtener más información, consulta Cambios en AOSP.
Bokeh de la cámara
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
El bokeh de la cámara es un efecto de profundidad de campo poco profundo que se crea difuminando partes de una escena para que no estén en foco. En las cámaras de los dispositivos móviles, el efecto bokeh se logra con la información de profundidad que se adquiere de la visión estéreo de dos cámaras o de fotodiodos dobles (PD) de una sola cámara.
A partir de Android 11, la plataforma de Android es compatible con las implementaciones de bokeh y proporciona APIs para que la función esté disponible en apps de terceros.
Implementación
Para que la función de desenfoque de la cámara esté disponible en tu dispositivo, haz lo siguiente:
Publica ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES
:
Esta etiqueta tiene el formato de un array de tuplas de tres números enteros, con cada tupla en el formato de {mode, maxWidth, maxHeight}
. Además de {ANDROID_CONTROL_EXTENDED_SCENE_MODE_DISABLED, 0, 0}
, el HAL de la cámara también debe enumerar uno o ambos modos ANDROID_CONTROL_EXTENDED_SCENE_MODE_BOKEH_STILL_CAPTURE
y ANDROID_CONTROL_EXTENDED_SCENE_MODE_BOKEH_CONTINUOUS
con sus respectivos tamaños máximos de transmisión.
Anuncia ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_ZOOM_RATIO_RANGES
:
Esta etiqueta tiene el formato de un array {minZoomRatio, maxZoomRatio}
, que contiene todos los rangos de relaciones de zoom para un modo de escena extendida habilitado, en el mismo orden que en ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES
. Un rango de zoom de [1.0, 1.0]
significa que no se admite el zoom.
Propaga ANDROID_CONTROL_USE_EXTENDED_SCENE_MODE
en ANDROID_CONTROL_AVAILABLE_MODES
.
Para que una app active la función de desenfoque, debe establecer ANDROID_CONTROL_MODE
en ANDROID_CONTROL_USE_EXTENDED_SCENE_MODE
y ANDROID_CONTROL_EXTENDED_SCENE_MODE
en uno de los modos de escena extendidos compatibles.
Ten en cuenta que implementar el desenfoque puede generar un consumo adicional de memoria debido al procesamiento estereoscópico.
Si no se puede aplicar un modo de escena extendida compatible por fotograma y se producen demoras inesperadas cuando se habilita o inhabilita, incluye ANDROID_CONTROL_EXTENDED_SCENE_MODE
en ANDROID_REQUEST_AVAILABLE_SESSION_KEYS
. Al mismo tiempo, implementa el método ICameraDeviceSession::isReconfigurationRequired()
para evitar la reconfiguración de los modos de escena extendidos que no requieren reconfiguración.
Validación
Para validar la función de desenfoque en tu dispositivo, ejecuta las siguientes pruebas de CTS, VTS y
CTS Verifier:
CtsCameraTestCases
VtsHalCameraProviderV2_4TargetTest
CameraBokehTest
en el verificador de CTS
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2025-07-26 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 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"]]