XR_ANDROID_eye_tracking
מחרוזת שם
XR_ANDROID_eye_tracking
סוג התוסף
תוסף למכונה
מספר השלוחה הרשום
457
גרסה
1
סטטוס האישור
לא אושר
תלויות של תוספים וגרסאות
תאריך השינוי האחרון
2025-01-17
סטטוס IP
אין תלונות ידועות על הפרת קניין רוחני.
שותפים ביצירת התוכן
Spencer Quin, Google
Jared Finder, Google
Levana Chen, Google
Kenny Vercaemer, Google
Prasanthi Gurumurthy, Google
Nihav Jain, Google
סקירה כללית
התוסף הזה מאפשר לאפליקציות לקבל את המיקום והכיוון של עיני המשתמש, וגם את סטטוס מעקב העיניים.
נתוני מעקב העיניים מסופקים בשני מצבים: גס ומדויק. מעקב גס מספק הערכה גסה של עיני המשתמש, ואילו מעקב עדין מספק הערכה מדויקת יותר. מעקב גס מיועד לאפליקציות שרוצות לספק ייצוג בסיסי דמוי דמות, ומעקב עדין מיועד לאפליקציות מדויקות יותר.
כדי ליצור אינטראקציה, צריך להשתמש ב-XR_EXT_eye_gaze_interaction.
הרשאות
אפליקציות ל-Android חייבות לכלול במניפסט את ההרשאה android.permission.EYE_TRACKING_COARSE או android.permission.EYE_TRACKING_FINE. ההרשאות האלה נחשבות להרשאות מסוכנות. האפליקציה חייבת לבקש את ההרשאה בזמן הריצה כדי להשתמש בפונקציות האלה:
- xrCreateEyeTrackerANDROID (לפחות אחת מההרשאות)
- xrGetCoarseTrackingEyesInfoANDROID (android.permission.EYE_TRACKING_COARSE)
- xrGetFineTrackingEyesInfoANDROID (android.permission.EYE_TRACKING_FINE)
(רמת הגנה: מסוכן)
בדיקת יכולות המערכת
המבנה של XrSystemEyeTrackingPropertiesANDROID מוגדר כך:
typedef struct XrSystemEyeTrackingPropertiesANDROID {
XrStructureType type;
void* next;
XrBool32 supportsEyeTracking;
} XrSystemEyeTrackingPropertiesANDROID;
תיאורי חברים
-
typeהוא ה-XrStructureType של המבנה הזה. -
nextהואNULLאו מצביע למבנה הבא בשרשרת מבנים. מבנים כאלה לא מוגדרים ב-OpenXR או בתוסף הזה. -
supportsEyeTrackingהואXrBool32שמציין אם המערכת הנוכחית תומכת במעקב עיניים.
אפליקציה יכולה לבדוק אם המערכת מסוגלת לבצע מעקב עיניים על ידי הרחבת XrSystemProperties באמצעות המבנה XrSystemEyeTrackingPropertiesANDROID כשקוראים ל-xrGetSystemProperties .
אם ורק אם זמן ריצה מחזיר את הערך XR_FALSE עבור supportsEyeTracking , זמן הריצה חייב להחזיר את הערך XR_ERROR_FEATURE_UNSUPPORTED מ-xrCreateEyeTrackerANDROID .
שימוש תקין (משתמע)
- חובה להפעיל את התוסף
XR_ANDROID_eye_trackingלפני שמשתמשים ב-XrSystemEyeTrackingPropertiesANDROID -
typeחייב להיותXR_TYPE_SYSTEM_EYE_TRACKING_PROPERTIES_ANDROID -
nextחייב להיותNULLאו מצביע תקין למבנה הבא בשרשרת מבנים
יצירת נקודת אחיזה למעקב עיניים
XR_DEFINE_HANDLE(XrEyeTrackerANDROID)
ה-handle XrEyeTrackerANDROID מייצג מעקב עיניים, וממפה במדויק את המקום שאליו המשתמש מסתכל.
נתוני מעקב העיניים הם מידע אישי רגיש שקשור באופן הדוק לפרטיות ולשלמות האישית. מומלץ מאוד שאפליקציות ששומרות או מעבירות נתוני מעקב עיניים תמיד יבקשו מהמשתמשים אישור פעיל וספציפי לכך.
האפליקציה משתמשת בכינוי הזה כדי לגשת לנתוני מעקב העיניים באמצעות פונקציות אחרות בתוסף הזה.
מעקב עיניים מספק ייצוג של תנוחת העיניים והסטטוס שלהן בסצנה.
הפונקציה xrCreateEyeTrackerANDROID מוגדרת כך:
XrResult xrCreateEyeTrackerANDROID(
XrSession session,
const XrEyeTrackerCreateInfoANDROID* createInfo,
XrEyeTrackerANDROID* eyeTracker);
תיאורי פרמטרים
-
sessionהוא נקודת אחיזה של XrSession שבה מעקב העיניים יהיה פעיל. -
createInfoהוא XrEyeTrackerCreateInfoANDROID שמשמש לציון מעקב העיניים. -
eyeTrackerהוא המזהה של XrEyeTrackerANDROID שמוחזר.
אפליקציה יוצרת נקודת אחיזה מסוג XrEyeTrackerANDROID באמצעות הפונקציה xrCreateEyeTrackerANDROID.
אם המערכת לא תומכת במעקב עיניים, סביבת זמן הריצה חייבת להחזיר את הערך XR_ERROR_FEATURE_UNSUPPORTED מ-xrCreateEyeTrackerANDROID .
שימוש תקין (משתמע)
- חובה להפעיל את התוסף
XR_ANDROID_eye_trackingלפני שקוראים לפונקציה xrCreateEyeTrackerANDROID -
sessionחייב להיות כינוי תקין של XrSession -
createInfoחייב להיות מצביע למבנה XrEyeTrackerCreateInfoANDROID תקין -
eyeTrackerחייב להיות מצביע לכינוי XrEyeTrackerANDROID
קודי החזרה
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FEATURE_UNSUPPORTEDXR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_VALIDATION_FAILURE
המבנה של XrEyeTrackerCreateInfoANDROID מוגדר כך:
typedef struct XrEyeTrackerCreateInfoANDROID {
XrStructureType type;
const void* next;
} XrEyeTrackerCreateInfoANDROID;
תיאורי חברים
-
typeהוא ה-XrStructureType של המבנה הזה. -
nextהואNULLאו מצביע למבנה הבא בשרשרת מבנים. מבנים כאלה לא מוגדרים ב-OpenXR או בתוסף הזה.
המבנה XrEyeTrackerCreateInfoANDROID מתאר את המידע ליצירת נקודת אחיזה (handle) מסוג XrEyeTrackerANDROID.
שימוש תקין (משתמע)
- חובה להפעיל את התוסף
XR_ANDROID_eye_trackingלפני שמשתמשים ב-XrEyeTrackerCreateInfoANDROID -
typeחייב להיותXR_TYPE_EYE_TRACKER_CREATE_INFO_ANDROID -
nextחייב להיותNULLאו מצביע תקין למבנה הבא בשרשרת מבנים
הפונקציה xrDestroyEyeTrackerANDROID מוגדרת כך:
XrResult xrDestroyEyeTrackerANDROID(
XrEyeTrackerANDROID eyeTracker);
תיאורי פרמטרים
-
eyeTrackerהוא XrEyeTrackerANDROID שנוצר קודם על ידי xrCreateEyeTrackerANDROID .
הפונקציה xrDestroyEyeTrackerANDROID משחררת את eyeTracker ואת המשאבים הבסיסיים כשמסיימים את חוויות מעקב העיניים.
שימוש תקין (משתמע)
- חובה להפעיל את התוסף
XR_ANDROID_eye_trackingלפני שקוראים לפונקציה xrDestroyEyeTrackerANDROID -
eyeTrackerחייב להיות כינוי תקין של XrEyeTrackerANDROID
Thread Safety
- הגישה אל
eyeTracker, ואל כל נקודות האחיזה הצאצאות, חייבת להיות מסונכרנת באופן חיצוני
קודי החזרה
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_RUNTIME_FAILURE
מתבצעת קבלת מידע על העיניים
הפונקציה xrGetCoarseTrackingEyesInfoANDROID מוגדרת כך:
XrResult xrGetCoarseTrackingEyesInfoANDROID(
XrEyeTrackerANDROID eyeTracker,
const XrEyesGetInfoANDROID* getInfo,
XrEyesANDROID* eyesOutput);
תיאורי פרמטרים
-
eyeTrackerהוא XrEyeTrackerANDROID שנוצר קודם על ידי xrCreateEyeTrackerANDROID . -
getInfoהוא מצביע ל-XrEyesGetInfoANDROID שמשמש למתן מידע לשאילתות על תנוחות ומצבים של העיניים. -
eyesOutputהוא מצביע אל XrEyesANDROID שמכיל את פרטי העיניים שמוחזרים, כולל תנוחות ומצבים.
הפונקציה xrGetCoarseTrackingEyesInfoANDROID מקבלת את המידע על מצבי העיניים והתנוחות באופן ששומר על פרטיות המשתמשים.
זמן הריצה חייב להחזיר את הערך XR_ERROR_PERMISSION_INSUFFICIENT אם לאפליקציה אין את ההרשאה android.permission.EYE_TRACKING_COARSE.
תנוחות העיניים מבוטאות ב-XrEyesGetInfoANDROID :: baseSpace ב-XrEyesGetInfoANDROID :: time .
בכל שלב, המיקום והכיוון של תנוחת העיניים נמצאים במעקב או לא. כלומר, זמן הריצה חייב להגדיר גם את XR_SPACE_LOCATION_POSITION_TRACKED_BIT וגם את XR_SPACE_LOCATION_ORIENTATION_TRACKED_BIT או לנקות גם את XR_SPACE_LOCATION_POSITION_TRACKED_BIT וגם את XR_SPACE_LOCATION_ORIENTATION_TRACKED_BIT ב-XrEyesANDROID :: eyes שסופק, ולהגדיר את XrEyesANDROID :: mode כדי לציין את מצבי המעקב.
שימוש תקין (משתמע)
- חובה להפעיל את התוסף
XR_ANDROID_eye_trackingלפני שקוראים לפונקציה xrGetCoarseTrackingEyesInfoANDROID -
eyeTrackerחייב להיות כינוי תקין של XrEyeTrackerANDROID -
getInfoחייב להיות מצביע למבנה XrEyesGetInfoANDROID תקין -
eyesOutputחייב להיות מצביע למבנה XrEyesANDROID
קודי החזרה
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_PERMISSION_INSUFFICIENTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_TIME_INVALIDXR_ERROR_VALIDATION_FAILURE
הפונקציה xrGetFineTrackingEyesInfoANDROID מוגדרת כך:
XrResult xrGetFineTrackingEyesInfoANDROID(
XrEyeTrackerANDROID eyeTracker,
const XrEyesGetInfoANDROID* getInfo,
XrEyesANDROID* eyesOutput);
תיאורי פרמטרים
-
eyeTrackerהוא XrEyeTrackerANDROID שנוצר קודם על ידי xrCreateEyeTrackerANDROID . -
getInfoהוא מצביע אל XrEyesGetInfoANDROID שמשמש כדי לציין איזה פלט נדרש. -
eyesOutputהוא מצביע אל XrEyesANDROID שמכיל את פרטי העיניים שמוחזרים, כולל תנוחות ומצבים.
הפונקציה xrGetFineTrackingEyesInfoANDROID מקבלת את המידע על המצבים והתנוחות של העיניים ברמת דיוק גבוהה יותר מאשר xrGetCoarseTrackingEyesInfoANDROID .
זמן הריצה חייב להחזיר את הערך XR_ERROR_PERMISSION_INSUFFICIENT אם לאפליקציה אין את ההרשאה android.permission.EYE_TRACKING_FINE.
המידע על העיניים נפתר וקשור למרחב הבסיס בזמן הקריאה ל-xrGetFineTrackingEyesInfoANDROID באמצעות XrEyesGetInfoANDROID :: time , XrEyesGetInfoANDROID :: baseSpace . סביבת זמן הריצה חייבת לפתור את המיקום שמוגדר על ידי XrEyesGetInfoANDROID :: baseSpace בזמן הקריאה.
בכל שלב, המיקום והכיוון של תנוחת העיניים נמצאים במעקב או לא. כלומר, זמן הריצה חייב להגדיר גם את XR_SPACE_LOCATION_POSITION_TRACKED_BIT וגם את XR_SPACE_LOCATION_ORIENTATION_TRACKED_BIT או לנקות גם את XR_SPACE_LOCATION_POSITION_TRACKED_BIT וגם את XR_SPACE_LOCATION_ORIENTATION_TRACKED_BIT ב-XrEyesANDROID :: eyes שסופק, ולהגדיר את XrEyesANDROID :: mode כדי לציין את מצבי המעקב.
שימוש תקין (משתמע)
- חובה להפעיל את התוסף
XR_ANDROID_eye_trackingלפני שקוראים לפונקציה xrGetFineTrackingEyesInfoANDROID -
eyeTrackerחייב להיות כינוי תקין של XrEyeTrackerANDROID -
getInfoחייב להיות מצביע למבנה XrEyesGetInfoANDROID תקין -
eyesOutputחייב להיות מצביע למבנה XrEyesANDROID
קודי החזרה
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_PERMISSION_INSUFFICIENTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_TIME_INVALIDXR_ERROR_VALIDATION_FAILURE
המבנה XrEyesGetInfoANDROID מכיל את המידע שנדרש כדי לאחזר את התנוחות והמצבים של העיניים.
typedef struct XrEyesGetInfoANDROID {
XrStructureType type;
const void* next;
XrTime time;
XrSpace baseSpace;
} XrEyesGetInfoANDROID;
תיאורי חברים
-
typeהוא ה-XrStructureType של המבנה הזה. -
nextהואNULLאו מצביע למבנה הבא בשרשרת מבנים. מבנים כאלה לא מוגדרים ב-OpenXR או בתוסף הזה. -
timeהוא ה-XrTimeשבו צריך להעריך את הקואורדינטות ביחס ל-baseSpace. -
baseSpaceהוא ה-XrSpace שבו יוחזרו תנוחות העיניים.
שימוש תקין (משתמע)
- חובה להפעיל את התוסף
XR_ANDROID_eye_trackingלפני שמשתמשים ב-XrEyesGetInfoANDROID -
typeחייב להיותXR_TYPE_EYES_GET_INFO_ANDROID -
nextחייב להיותNULLאו מצביע תקין למבנה הבא בשרשרת מבנים -
baseSpaceחייב להיות כינוי תקין ב-XrSpace
המבנה XrEyesANDROID מכיל מידע על העיניים במעקב.
typedef struct XrEyesANDROID {
XrStructureType type;
void* next;
XrEyeANDROID eyes[XR_EYE_MAX_ANDROID];
XrEyeTrackingModeANDROID mode;
} XrEyesANDROID;
תיאורי חברים
-
typeהוא ה-XrStructureType של המבנה הזה. -
nextהואNULLאו מצביע למבנה הבא בשרשרת מבנים. מבנים כאלה לא מוגדרים ב-OpenXR או בתוסף הזה. -
eyesהוא מערך של XrEyeANDROID בגודלXR_EYE_MAX_ANDROIDלעין שמאל ועין ימין, לפי האינדקס של XrEyeIndexANDROID . -
modeהוא XrEyeTrackingModeANDROID שמציין אחרי איזו מהעיניים מתבצע מעקב כרגע.
שימוש תקין (משתמע)
- חובה להפעיל את התוסף
XR_ANDROID_eye_trackingלפני שמשתמשים ב-XrEyesANDROID -
typeחייב להיותXR_TYPE_EYES_ANDROID -
nextחייב להיותNULLאו מצביע תקין למבנה הבא בשרשרת מבנים - כל רכיב נתון של
eyesחייב להיות מבנה XrEyeANDROID תקין -
modeחייב להיות ערך XrEyeTrackingModeANDROID תקין
המבנה XrEyeANDROID מתאר את המצב, המיקום והכיוון של העין.
typedef struct XrEyeANDROID {
XrEyeStateANDROID eyeState;
XrPosef eyePose;
} XrEyeANDROID;
תיאורי חברים
-
eyeStateהוא ה-XrEyeStateANDROID של העין. -
eyePoseהוא XrPosef שמגדיר את המיקום והכיוון של האישון של העין בתוך מסגרת הייחוס של XrEyesGetInfoANDROID ::baseSpaceהתואם. כיוון הזהות כאן מייצג צירי קואורדינטות עם +Z לכיוון העיניים של המשתמש, +X ימינה ו-+Y למעלה.
שימוש תקין (משתמע)
- חובה להפעיל את התוסף
XR_ANDROID_eye_trackingלפני שמשתמשים ב-XrEyeANDROID -
eyeStateחייב להיות ערך XrEyeStateANDROID תקין
הספירה XrEyeStateANDROID מזהה את המצבים השונים של העיניים במעקב.
typedef enum XrEyeStateANDROID {
XR_EYE_STATE_INVALID_ANDROID = 0,
XR_EYE_STATE_GAZING_ANDROID = 1,
XR_EYE_STATE_SHUT_ANDROID = 2,
XR_EYE_STATE_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrEyeStateANDROID;
אלה המשמעויות של ה-enums:
תיאור הטיפוס בן המנייה (enum)
XR_EYE_STATE_INVALID_ANDROID
מציין שהעין במצב שגיאה או לא קיימת.
XR_EYE_STATE_GAZING_ANDROID
מציין שהעין מביטה כרגע.
XR_EYE_STATE_SHUT_ANDROID
מציין שהעין סגורה כרגע בגלל קריצה או מצמוץ.
הספירה XrEyeIndexANDROID מזהה את האינדקס של העין השמאלית או הימנית.
typedef enum XrEyeIndexANDROID {
XR_EYE_INDEX_LEFT_ANDROID = 0,
XR_EYE_INDEX_RIGHT_ANDROID = 1,
XR_EYE_INDEX_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrEyeIndexANDROID;
אלה המשמעויות של ה-enums:
תיאור הטיפוס בן המנייה (enum)
XR_EYE_INDEX_LEFT_ANDROID
עין שמאל.
XR_EYE_INDEX_RIGHT_ANDROID
עין ימין.
הספירה XrEyeTrackingModeANDROID מזהה את המצבים השונים של העיניים במעקב.
typedef enum XrEyeTrackingModeANDROID {
XR_EYE_TRACKING_MODE_NOT_TRACKING_ANDROID = 0,
XR_EYE_TRACKING_MODE_RIGHT_ANDROID = 1,
XR_EYE_TRACKING_MODE_LEFT_ANDROID = 2,
XR_EYE_TRACKING_MODE_BOTH_ANDROID = 3,
XR_EYE_TRACKING_MODE_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrEyeTrackingModeANDROID;
אלה המשמעויות של ה-enums:
תיאור הטיפוס בן המנייה (enum)
XR_EYE_TRACKING_MODE_NOT_TRACKING_ANDROID
מציין שמעקב העיניים לא פעיל כרגע.
XR_EYE_TRACKING_MODE_RIGHT_ANDROID
מציין שרק העין הימנית עוקבת.
XR_EYE_TRACKING_MODE_LEFT_ANDROID
מציין שרק העין השמאלית עוקבת.
XR_EYE_TRACKING_MODE_BOTH_ANDROID
מציין שגם העין השמאלית וגם העין הימנית עוקבות.
#define XR_EYE_MAX_ANDROID 2
XR_EYE_MAX_ANDROID הוא המספר המקסימלי של עיניים שעבורן מדווחים נתוני XrEyeANDROID.
קוד לדוגמה למעקב עיניים
הקוד לדוגמה הבא ממחיש איך לקבל מידע על העיניים ביחס למרחב התצוגה.
XrSession session; // previously initialized, e.g. created at app startup.
XrSpace viewSpace; // space created for XR_REFERENCE_SPACE_TYPE_VIEW.
// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrCreateEyeTrackerANDROID xrCreateEyeTrackerANDROID; // previously initialized
PFN_xrDestroyEyeTrackerANDROID xrDestroyEyeTrackerANDROID; // previously initialized
PFN_xrGetCoarseTrackingEyesInfoANDROID xrGetCoarseTrackingEyesInfoANDROID; // previously initialized
PFN_xrGetFineTrackingEyesInfoANDROID xrGetFineTrackingEyesInfoANDROID; // previously initialized
// This will use the XrSession that is bound to the eye tracker done at time of creation.
XrEyeTrackerANDROID eyeTracker;
XrEyeTrackerCreateInfoANDROID createInfo{
.type = XR_TYPE_EYE_TRACKER_CREATE_INFO_ANDROID,
.next = nullptr};
CHK_XR(xrCreateEyeTrackerANDROID(session, &createInfo, &eyeTracker));
while (1) {
// ...
// For every frame in frame loop
// ...
XrFrameState frameState; // previously returned from xrWaitFrame
const XrTime time = frameState.predictedDisplayTime;
XrEyesANDROID fineEyesInfo{.type = XR_TYPE_EYES_ANDROID,
.next = nullptr,
.mode = XR_EYE_TRACKING_MODE_BOTH_ANDROID};
XrEyesANDROID coarseEyesInfo{.type = XR_TYPE_EYES_ANDROID,
.next = nullptr,
.mode = XR_EYE_TRACKING_MODE_BOTH_ANDROID};
XrEyesGetInfoANDROID eyesGetInfo{.type = XR_TYPE_EYES_GET_INFO_ANDROID,
.next = nullptr,
.time = time,
.baseSpace = viewSpace};
CHK_XR(xrGetCoarseTrackingEyesInfoANDROID(eyeTracker, &eyesGetInfo, &coarseEyesInfo));
CHK_XR(xrGetFineTrackingEyesInfoANDROID(eyeTracker, &eyesGetInfo, &fineEyesInfo));
// eyes tracking information is now available:
// drawLeftEye(eyesInfo.eyes[XR_EYE_INDEX_LEFT_ANDROID].eyePose);
// drawRightEye(eyesInfo.eyes[XR_EYE_INDEX_RIGHT_ANDROID].eyePose);
// ...
// Finish frame loop
// ...
}
// after usage
CHK_XR(xrDestroyEyeTrackerANDROID(eyeTracker));
סוגי אובייקטים חדשים
פקודות חדשות
- xrCreateEyeTrackerANDROID
- xrDestroyEyeTrackerANDROID
- xrGetCoarseTrackingEyesInfoANDROID
- xrGetFineTrackingEyesInfoANDROID
מבנים חדשים
- XrEyeANDROID
- XrEyeTrackerCreateInfoANDROID
- XrEyesANDROID
- XrEyesGetInfoANDROID
הרחבת XrSystemProperties :
ערכי Enums חדשים
קבועי Enum חדשים
XR_ANDROID_EYE_TRACKING_EXTENSION_NAMEXR_ANDROID_eye_tracking_SPEC_VERSIONXR_EYE_MAX_ANDROIDהרחבה של XrObjectType :
XR_OBJECT_TYPE_EYE_TRACKER_ANDROID
הרחבה של XrStructureType :
XR_TYPE_EYES_ANDROIDXR_TYPE_EYES_GET_INFO_ANDROIDXR_TYPE_EYE_TRACKER_CREATE_INFO_ANDROIDXR_TYPE_SYSTEM_EYE_TRACKING_PROPERTIES_ANDROID
בעיות
היסטוריית הגרסאות
גרסה 1, 17 בינואר 2025 (Kenny Vercaemer)
- תיאור התוסף הראשוני