ARCore ל-Jetpack XR

שילוב של תוכן דיגיטלי בעולם האמיתי באמצעות יכולות חישה.
העדכון האחרון גרסה יציבה גרסה מועמדת להפצה גרסת בטא גרסת אלפא
7 במאי 2025 - - - 1.0.0-alpha04

הצהרת יחסי תלות

כדי להוסיף תלות ב-ARCore ל-Jetpack XR, צריך להוסיף את מאגר Google Maven לפרויקט. מידע נוסף זמין ב מאגר Maven של Google.

מוסיפים את יחסי התלות של הארטיפקטים הנדרשים בקובץ build.gradle של האפליקציה או המודול:

מגניב

dependencies {
    implementation "androidx.xr.arcore:arcore:1.0.0-alpha04"
}

Kotlin

dependencies {
    implementation("androidx.xr.arcore:arcore:1.0.0-alpha04")
}

מידע נוסף על יחסי תלות זמין במאמר הוספת יחסי תלות ל-build.

משוב

המשוב שלכם עוזר לנו לשפר את Jetpack. אם נתקלתם בבעיות חדשות או שיש לכם רעיונות לשיפור הספרייה הזו, נשמח לשמוע מכם. לפני שיוצרים בעיה חדשה, כדאי לעיין בבעיות הקיימות בספרייה הזו. כדי להצביע על בעיה קיימת, לוחצים על לחצן הכוכב.

דיווח על בעיה חדשה

מידע נוסף זמין במסמכי התיעוד של Issue Tracker.

גירסה 1.0

גרסה 1.0.0-alpha04

7 במאי 2025

androidx.xr.arcore:arcore:1.0.0-alpha04 משוחרר. הגרסה 1.0.0-alpha04 מכילה את ההוספות האלה.

שינויים ב-API

  • כדי להשתמש בפרויקטים שפורסמו עם Kotlin 2.0, צריך להשתמש ב-KGP 2.0.0 ואילך. (Idb6b5)
  • TrackingState ו-HandJointType הועברו מ-ARCore ל-Runtime.
  • השם של המרחב Hand.State.isActive (boolean) השתנה ל-Hand.State.trackingState (androidx.xr.runtime.TrackingState).
  • הפונקציה Anchor.load מחזירה את הערך Anchor.AnchorLoadInvalidUuid אם ה-UUID לא תקין.

גרסה 1.0.0-alpha03

26 בפברואר 2025

androidx.xr.arcore:arcore:1.0.0-alpha03 פורסם ללא שינויים משמעותיים מאז גרסת האלפא האחרונה. הגרסה 1.0.0-alpha03 כוללת את ההוספות האלה.

גרסה 1.0.0-alpha02

12 בפברואר 2025

androidx.xr.arcore:arcore:1.0.0-alpha02 משוחרר. הגרסה 1.0.0-alpha02 כוללת את ההוספות האלה.

תכונות חדשות

  • הוספנו תמיכה במעקב אחר תנועות הידיים. משתמשים ב-Hand.left וב-Hand.right כדי לגשת לפרטי המעקב.
  • ממשקי API שיוצרים עוגן (Anchor.create, ‏ Anchor.load, ‏ Plane.createAnchor) מחזירים עכשיו את הערך AnchorCreateResult ומטמיעים כראוי את AnchorCreateResourcesExhausted.

תיקוני באגים

  • Anchor.detach לא גורם יותר לקריסה קטלנית בגלל תנאי מרוץ עם שרשור העדכון של הסשן.
  • Anchor.create יציב יותר כשמריצים אותו במהדמה

גרסה 1.0.0-alpha01

‫12 בדצמבר 2024

androidx.xr.arcore:arcore-* 1.0.0-alpha01 משוחרר.

התכונות של הגרסה הראשונית

ספריית ARCore ל-Jetpack XR, בהשראת הספרייה הקיימת של ARCore, מספקת יכולות לשילוב תוכן דיגיטלי עם העולם האמיתי. הספרייה הזו כוללת מעקב אחר תנועה, עוגנים קבועים, בדיקת התאמה (hit testing) וזיהוי מישורים באמצעות תיוג סמנטי (לדוגמה, רצפה, קירות ומשטחי שולחן). מידע נוסף על עבודה עם ARCore ל-Jetpack XR זמין במדריך למפתחים.

  • Session: ב-ARCore ל-Jetpack XR נעשה שימוש ב-Jetpack XR Runtime כדי להפעיל את הפונקציונליות שלו. תשתמשו בסשן כדי לקיים אינטראקציה עם רוב ממשקי ה-API של ARCore for Jetpack XR, לכן כדאי לעיין במסמכי העזרה שלו.

  • Plane: שימוש במטוסים כדי להבין את העולם סביבכם. לכל מישור יש Label שמתאר אותו מבחינה סמנטית. אפשר להשתמש ב-subscribe כדי לקבל התראות על המטוסים האחרונים שזוהו, או ב-state כדי לקבל התראות על השינויים במטוס ספציפי.

  • Anchor: קישור בין אובייקט וירטואלי לבין מיקום בעולם האמיתי. אפשר לצרף עוגנים למיקום ספציפי במרחב (באמצעות create) או לTrackable (באמצעות createAnchor).

    • אפשר לעשות שימוש חוזר בצירים בסשנים שונים. אפשר להשתמש ב-persist כדי לאחסן אותם, ב-getPersistedAnchorUuids כדי למנות אותם וב-load כדי לאחזר אותם. חשוב unpersist אותם כשהם לא בשימוש יותר.

    • אפשר להשתמש ב-Anchors ב-ARCore ל-Jetpack XR וב-Jetpack SceneCore. אפשר ליצור AnchorEntity באמצעות עוגן, או אם יש לכם ישות עוגן קיימת, תוכלו להשתמש ב-getAnchor כדי לאחזר את עוגן התמיכה שלה.

    • להציע אינטראקציות טבעיות של משתמשים באמצעות hitTest. בדיקת היתקלות משתמשת ב-Ray כדי לקבוע אילו תכנים היא חוצה וליצור Anchor מהמיקום הזה. מומלץ לבצע בדיקת hitTest מ-InputEvent.

בעיות מוכרות

  • יכול להיות עיכוב בין הקריאה ל-unpersist לבין הסרת ה-UUID שלו מהתוצאות שמוחזרות על ידי getPersistedAnchorUuids.

  • create לא יאמת שיש למערכת מספיק משאבים כדי להחזיר עוגנים חדשים. יצירת כמות גדולה מדי של עוגנים עלולה לגרום לקריסה.

  • בשלב הזה אין תמיכה בשמירת עוגן שכבר נשמר בעבר וביטול השמירה שלו.

  • אפשר להשתמש ב-emulator, אבל יכול להיות שההתנהגות לא תהיה יציבה כמו כשמריצים במכשיר אמיתי. באופן ספציפי, קריאות ל-create עלולות להיכשל עם שגיאה בקוד מקורי ולסגור את הפעילות באופן מיידי.

  • במקרים מסוימים, יכול להיות ש-RuntimeException יושלח בטעות בקריאה ל-persist עם ההודעה "העוגן לא נשמר". במקרים כאלה, הפונקציה עדיין תצליח והעוגן יישמר. כפתרון זמני, מומלץ לעטוף את הקריאה ל-persist בבלוק try.