החל מ-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
לאחד ממצבי התמונה המורחבים הנתמכים.
חשוב לדעת שהטמעת אפקט bokeh עשויה להוביל לצריכת זיכרון נוספת בגלל חישוב סטראוסקופי.
אם אי אפשר להחיל מצב תצוגה מורחב נתמך לכל פריים, והפעלה או השבתה שלו גורמת לעיכובים לא צפויים, צריך לכלול את 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-26 (שעון 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-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"]]