Jetpack פיתוח נייטיב ל-XR

יצירה של פריסות של ממשק משתמש מרחבי באופן דקלרטיבי, שמנצלות את היכולות המרחביות של Android XR.
העדכון האחרון גרסה יציבה גרסה מועמדת להפצה גרסת בטא גרסה אלפא
12 בדצמבר 2024 - - - 1.0.0-alpha01

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

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

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

מגניב

dependencies {
    implementation "androidx.xr.compose:compose:1.0.0-alpha01"

    // Use to write unit tests
    testImplementation "androidx.xr.compose:compose-testing:1.0.0-alpha01"
}

Kotlin

dependencies {
    implementation("androidx.xr.compose:compose:1.0.0-alpha01")

    // Use to write unit tests
    testImplementation("androidx.xr.compose:compose-testing:1.0.0-alpha01")
}

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

משוב

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

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

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

גירסה 1.0

גרסה 1.0.0-alpha01

12 בדצמבר 2024

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

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

  • גרסה ראשונית למפתחים של Jetpack Compose ל-XR. אתם יכולים להשתמש במושגים מוכרים של Compose, כמו שורות ועמודות, כדי ליצור פריסות של ממשק משתמש מרחבי ב-XR, בין שאתם מעבירים אפליקציה קיימת 2D ל-XR ובין שאתם יוצרים אפליקציית XR חדשה מאפס. הספרייה הזו מספקת רכיבים שאפשר ליצור מהם מרחבים משניים ומרחבים תלת-ממדיים, כמו לוחות תלת-ממדיים ורכיבי 'מסלול', שמאפשרים למקם את ממשק המשתמש הקיים שלכם ב-Compose 2D או מבוסס-Views בפריסה תלת-ממדית. העדכון כולל את הרכיב Volume subspace composable, שמאפשר למקם ישויות של SceneCore, כמו מודלים תלת-ממדיים, ביחס לממשק המשתמש. מידע נוסף זמין במדריך למפתחים:

    • Subspace: אפשר למקם את הרכיב הזה בכל מקום בהיררכיית ממשק המשתמש של האפליקציה, וכך לשמור על פריסות לממשק משתמש דו-ממדי ומרחבי בלי לאבד את ההקשר בין הקבצים. כך קל יותר לשתף דברים כמו ארכיטקטורת אפליקציה קיימת בין XR לבין גורמי צורה אחרים, בלי שתצטרכו להעביר את המצב דרך כל עץ ממשק המשתמש או לתכנן מחדש את הארכיטקטורה של האפליקציה.

    • SpatialPanel: ‏SpatialPanel הוא מרחבים משניים שניתן ליצור מהם רכיבים, ומאפשר להציג תוכן של אפליקציות. לדוגמה, אפשר להציג הפעלת וידאו, תמונות סטילס או כל תוכן אחר ב-SpatialPanel.

    • Orbiter: Orbiter הוא רכיב של ממשק משתמש מרחבי. הוא מיועד להתחבר ללוח מרחבי תואם, ומכיל פריטים של ניווט ופעולות לפי הקשר שקשורים ללוח המרחבי הזה. לדוגמה, אם יצרתם לוח מרחבי כדי להציג תוכן וידאו, תוכלו להוסיף לחצני בקרה על הפעלת הסרטון בתוך כלי ניווט.

    • נפח: מיקום של ישויות SceneCore, כמו מודלים תלת-ממדיים, ביחס לממשק המשתמש.

  • פריסה מרחבית: אפשר ליצור כמה לוחות מרחבים ולהציב אותם בפריסה מרחבית באמצעות SpatialRow, SpatialColumn, SpatialBox ו-SpatialLayoutSpacer. משתמשים בסמלי SubspaceModifier כדי להתאים אישית את הפריסה.

  • רכיבי ממשק משתמש מרחבי: אפשר לעשות שימוש חוזר ברכיבים האלה בממשק המשתמש הדו-מימדי, והמאפיינים המרחביים שלהם יהיו גלויים רק כשהיכולות המרחביות מופעלות.

    • SpatialDialog: החלונית תזוז מעט לאחור ב-z-depth כדי להציג תיבת דו-שיח מוגבהת.
    • SpatialPopUp: החלונית תזוז מעט לאחור ב-z-depth כדי להציג חלון קופץ מוגבה
    • SpatialElevation: אפשר להגדיר את SpatialElevationLevel כך שיוסיף גובה.
  • SpatialCapabilities: יכולות המרחב יכולות להשתנות כאשר המשתמשים יוצרים אינטראקציה עם האפליקציה או עם המערכת, או אפילו על ידי האפליקציה עצמה – לדוגמה, מעבר למרחב הבית או למרחב המלא. כדי למנוע בעיות, האפליקציה צריכה לבדוק את LocalSpatialCapabilities.current כדי לקבוע אילו ממשקי API נתמכים בסביבה הנוכחית. isSpatialUiEnabled: רכיבי ממשק משתמש מרחבי (למשל, SpatialPanel) isContent3dEnabled: אובייקטים תלת-ממדיים isAppEnvironmentEnabled: הסביבה isPassthroughControlEnabled: האם האפליקציה יכולה לשלוט במצב העברה או לא isSpatialAudioEnabled: אודיו מרחבי

בעיות מוכרות

  • נכון לעכשיו, נדרש minSDK של 30 כדי להשתמש ב-Jetpack Compose ל-XR. כפתרון זמני, אפשר להוסיף את רשומת המניפסט הבאה <uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/> כדי שתוכלו לבנות ולהריץ עם minSDK של 23.
  • אפליקציות Jetpack XR מחייבות כרגע לבקש הרשאה android.permission.SCENE_UNDERSTANDING ב-AndroidManifest.
  • כשאפליקציה מופעלת ישירות במרחב מלא באמצעות המאפיין PROPERTY_XR_ACTIVITY_START_MODE במניפסט שלה, הפעילויות או האפליקציות נפתחות בהתחלה במרחב הבית לפני המעבר למרחב המלא.
  • קובצי glTF ב-Volume Composables עשויים להבהב בהתחלה במיקום שגוי.
  • שימוש ב-SpatialDialog בחלונית שנדחקה באופן משמעותי ידחוף את התוכן לכיוון הלא נכון.