À partir du 27 mars 2025, nous vous recommandons d'utiliser android-latest-release
au lieu de aosp-main
pour créer et contribuer à AOSP. Pour en savoir plus, consultez la section Modifications apportées à AOSP.
Bokeh de l'appareil photo
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Le bokeh de l'appareil photo est un effet de profondeur de champ faible créé en floutant certaines parties d'une scène pour qu'elles ne soient pas nettes. Sur les appareils photo des appareils mobiles, l'effet bokeh est obtenu à l'aide d'informations de profondeur acquises à partir de la vision stéréo de deux appareils photo ou de deux photodiodes (PD) d'un seul appareil photo.
À partir d'Android 11, la plate-forme Android prend en charge les implémentations de bokeh et fournit des API pour rendre la fonctionnalité disponible pour les applications tierces.
Implémentation
Pour rendre la fonctionnalité Bokeh de l'appareil photo disponible sur votre appareil, procédez comme suit:
Annoncer ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES
:
Cette balise se présente sous la forme d'un tableau de trois tuplets entiers, chaque tuplet étant au format {mode, maxWidth, maxHeight}
. En plus de {ANDROID_CONTROL_EXTENDED_SCENE_MODE_DISABLED, 0, 0}
, le HAL de l'appareil photo doit également lister un ou les deux modes ANDROID_CONTROL_EXTENDED_SCENE_MODE_BOKEH_STILL_CAPTURE
et ANDROID_CONTROL_EXTENDED_SCENE_MODE_BOKEH_CONTINUOUS
avec leurs tailles de streaming maximales correspondantes.
Annoncer ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_ZOOM_RATIO_RANGES
:
Cette balise est au format d'un tableau {minZoomRatio, maxZoomRatio}
, qui contient toutes les plages de rapport de zoom pour un mode de scène étendu activé, dans le même ordre que dans ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES
. Une plage de zoom de [1.0, 1.0]
signifie que le zoom n'est pas compatible.
Renseignez ANDROID_CONTROL_USE_EXTENDED_SCENE_MODE
dans ANDROID_CONTROL_AVAILABLE_MODES
.
Pour qu'une application déclenche la fonctionnalité de bokeh, elle doit définir ANDROID_CONTROL_MODE
sur ANDROID_CONTROL_USE_EXTENDED_SCENE_MODE
et ANDROID_CONTROL_EXTENDED_SCENE_MODE
sur l'un des modes de scène étendus compatibles.
Notez que l'implémentation de bokeh peut entraîner une consommation de mémoire supplémentaire en raison du calcul stéréoscopique.
Si un mode de scène étendu compatible ne peut pas être appliqué par frame et entraîne des retards inattendus lorsqu'il est activé/désactivé, incluez ANDROID_CONTROL_EXTENDED_SCENE_MODE
dans ANDROID_REQUEST_AVAILABLE_SESSION_KEYS
. En même temps, implémentez la méthode ICameraDeviceSession::isReconfigurationRequired()
pour éviter la reconfiguration des modes de scène étendus qui ne nécessitent pas de reconfiguration.
Validation
Pour valider la fonctionnalité Bokeh sur votre appareil, exécutez les tests CTS, VTS et CTS Verifier suivants:
CtsCameraTestCases
VtsHalCameraProviderV2_4TargetTest
CameraBokehTest
dans le vérificateur CTS
Le contenu et les exemples de code de cette page sont soumis aux licences décrites dans la Licence de contenu. Java et OpenJDK sont des marques ou des marques déposées d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/07/26 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 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"]]