Начиная с 27 марта 2025 г. мы рекомендуем использовать android-latest-release
вместо aosp-main
для создания и участия в AOSP. Дополнительные сведения см. в разделе Изменения в AOSP .
Боке камеры
Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Боке камеры — это эффект малой глубины резкости, создаваемый путем размывания частей сцены, так что они не находятся в фокусе. На камерах мобильных устройств боке достигается с помощью информации о глубине, полученной из стереозрения двух камер или из двойных фотодиодов (PD) одной камеры.
Начиная с Android 11, платформа Android поддерживает реализацию эффекта боке и предоставляет API, делающие эту функцию доступной для сторонних приложений.
Выполнение
Чтобы сделать функцию боке камеры доступной на вашем устройстве, выполните следующие действия:
Реклама ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES
:
Этот тег имеет формат массива кортежей из трех целых чисел, где каждый кортеж имеет формат {mode, maxWidth, maxHeight}
. В дополнение к {ANDROID_CONTROL_EXTENDED_SCENE_MODE_DISABLED, 0, 0}
, HAL камеры также должен перечислить один или оба режима ANDROID_CONTROL_EXTENDED_SCENE_MODE_BOKEH_STILL_CAPTURE
и ANDROID_CONTROL_EXTENDED_SCENE_MODE_BOKEH_CONTINUOUS
с соответствующими им максимальными размерами потока.
Реклама ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_ZOOM_RATIO_RANGES
:
Этот тег имеет формат массива {minZoomRatio, maxZoomRatio}
, который содержит все диапазоны коэффициентов масштабирования для включенного расширенного режима сцены в том же порядке, что и в ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES
. Диапазон масштабирования [1.0, 1.0]
означает, что масштабирование не поддерживается.
Заполните ANDROID_CONTROL_USE_EXTENDED_SCENE_MODE
в ANDROID_CONTROL_AVAILABLE_MODES
.
Чтобы приложение активировало функцию боке, оно должно установить ANDROID_CONTROL_MODE
в ANDROID_CONTROL_USE_EXTENDED_SCENE_MODE
и ANDROID_CONTROL_EXTENDED_SCENE_MODE
в один из поддерживаемых расширенных режимов сцены. Обратите внимание, что реализация боке может привести к дополнительному потреблению памяти из-за стереовычислений.
Если поддерживаемый расширенный режим сцены не может быть применен для каждого кадра и приводит к неожиданным задержкам при включении/отключении, включите ANDROID_CONTROL_EXTENDED_SCENE_MODE
в ANDROID_REQUEST_AVAILABLE_SESSION_KEYS
. В то же время реализуйте метод ICameraDeviceSession::isReconfigurationRequired()
, чтобы избежать перенастройки для расширенных режимов сцены, которые не требуют перенастройки.
Проверка
Чтобы проверить функцию боке на вашем устройстве, запустите следующие тесты CTS, VTS и CTS Verifier:
-
CtsCameraTestCases
-
VtsHalCameraProviderV2_4TargetTest
-
CameraBokehTest
в CTS Verifier
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-07-29 UTC.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2025-07-29 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"]]