Od 27 marca 2025 r. zalecamy używanie android-latest-release
zamiast aosp-main
do kompilowania i wspołtworzenia AOSP. Więcej informacji znajdziesz w artykule o zmianach w AOSP.
Bokeh
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
Bokeh w aparacie to efekt płytkiej głębi ostrości, który polega na rozmyciu części sceny, aby nie były ostre. W przypadku aparatów w urządzeniach mobilnych efekt bokeh jest uzyskiwany dzięki informacjom o głębi uzyskanym z stereoskopowego widzenia z 2 aparatów lub z podwójnych fotodiod w pojedynczym aparacie.
Od Androida 11 platforma Android obsługuje implementacje bokeh i udostępnia interfejsy API, aby udostępnić tę funkcję aplikacjom innych firm.
Implementacja
Aby funkcja bokeh była dostępna na urządzeniu, wykonaj te czynności:
Reklamuj ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES
:
Ten tag ma format tablicy z 3 wartościami typu integer, a każda wartość ma format {mode, maxWidth, maxHeight}
. Oprócz trybu {ANDROID_CONTROL_EXTENDED_SCENE_MODE_DISABLED, 0, 0}
interfejs HAL aparatu musi również zawierać jeden lub oba tryby ANDROID_CONTROL_EXTENDED_SCENE_MODE_BOKEH_STILL_CAPTURE
i ANDROID_CONTROL_EXTENDED_SCENE_MODE_BOKEH_CONTINUOUS
z odpowiadającymi im maksymalnymi rozmiarami strumienia danych.
Reklamowanie:
ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_ZOOM_RATIO_RANGES
:
Ten tag ma format tablicy {minZoomRatio, maxZoomRatio}
, która zawiera wszystkie zakresy współczynnika powiększenia dla włączonego trybu rozszerzonej sceny w tym samym porządku co tablica ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES
. Zakres powiększenia [1.0, 1.0]
oznacza, że powiększenie nie jest obsługiwane.
Wypełnij pole ANDROID_CONTROL_USE_EXTENDED_SCENE_MODE
w ANDROID_CONTROL_AVAILABLE_MODES
.
Aby aplikacja mogła wywołać funkcję bokeh, musi ustawić wartość ANDROID_CONTROL_MODE
na ANDROID_CONTROL_USE_EXTENDED_SCENE_MODE
, a wartość ANDROID_CONTROL_EXTENDED_SCENE_MODE
na jeden z obsługiwanych rozszerzonych trybów sceny.
Pamiętaj, że implementacja bokeh może spowodować dodatkowe zużycie pamięci z powodu obliczeń stereo.
Jeśli obsługiwany rozszerzony tryb sceny nie może być stosowany w poszczególnych klatkach i powoduje nieoczekiwane opóźnienia po włączeniu/wyłączeniu, dodaj ANDROID_CONTROL_EXTENDED_SCENE_MODE
do ANDROID_REQUEST_AVAILABLE_SESSION_KEYS
. Jednocześnie zastosuj metodę ICameraDeviceSession::isReconfigurationRequired()
, aby uniknąć rekonfiguracji w przypadku rozszerzonych trybów sceny, które nie wymagają rekonfiguracji.
Weryfikacja
Aby zweryfikować funkcję bokeh na urządzeniu, uruchom te testy CTS, VTS i CTS Verifier:
CtsCameraTestCases
VtsHalCameraProviderV2_4TargetTest
CameraBokehTest
w weryfikatorze CTS
Treść strony i umieszczone na niej fragmenty kodu podlegają licencjom opisanym w Licencji na treści. Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi należącymi do firmy Oracle lub jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2025-07-26 UTC.
[[["Łatwo zrozumieć","easyToUnderstand","thumb-up"],["Rozwiązało to mój problem","solvedMyProblem","thumb-up"],["Inne","otherUp","thumb-up"]],[["Brak potrzebnych mi informacji","missingTheInformationINeed","thumb-down"],["Zbyt skomplikowane / zbyt wiele czynności do wykonania","tooComplicatedTooManySteps","thumb-down"],["Nieaktualne treści","outOfDate","thumb-down"],["Problem z tłumaczeniem","translationIssue","thumb-down"],["Problem z przykładami/kodem","samplesCodeIssue","thumb-down"],["Inne","otherDown","thumb-down"]],["Ostatnia aktualizacja: 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"]]