חדשות על מוצרים

עדכונים ב-Android XR SDK: השקת גרסת תצוגה מקדימה למפתחים 4

משך הקריאה: 5 דקות

אנחנו שמחים להשיק היום את גרסת תצוגה מקדימה למפתחים 4 של Android XR SDK, וממשיכים להתמקד באיחוד הפיתוח מקושר למכשיר אחר לאוזניות, למשקפי XR עם חיבור קווי ולמשקפיים חכמים. כדי שהפלטפורמה שלנו תהיה אינטואיטיבית, אנחנו משתמשים בשמות יותר תיאוריים לגורמי הצורה שלנו. למשל, משקפי AI הם עכשיו משקפיים עם ממשק קולי, ומשקפי AI עם תצוגה הם עכשיו משקפיים עם תצוגה פנימית. השינויים האלה מופיעים במאמרי העזרה שלנו החל מהיום.

הגרסה הזו כוללת הרבה עדכונים שיעזרו לכם ליצור חוויות מדהימות למכשירי XR, ליהנות מחוויות סוחפות יותר במשקפי XR ולפשט את התהליך של יצירת חוויות מציאות רבודה במשקפי שמע ומשקפיים עם תצוגה. בנוסף, ספריות הליבה שלנו – כולל XR Runtime,‏ Jetpack SceneCore ו-ARCore for Jetpack XR – יעברו בקרוב באופן רשמי לגרסת בטא.

כדי לתת לכם גישה מוקדמת לחומרה ולמשאבים ליצירת חוויות אימרסיביות וחוויות מציאות רבודה במכשירים עתידיים – כמו משקפיים עם תצוגה ומשקפיים עם ממשק קולי, ופרויקט Aura של XREAL – אנחנו מכריזים על Android XR Developer Catalyst Program. כדאי לקרוא מידע נוסף ולהגיש בקשה עוד היום. 

יצירת חוויות מציאות רבודה באוזניות ובמשקפיים עם תצוגה

בגרסת תצוגה מקדימה למפתחים 4, שמתחילה עם הספריות שלנו לחוויות מורחבות, מוצגים ממשקי API חדשים שעוזרים ליצור ולבדוק את האפליקציות.

‫Jetpack Projected: זמינות המכשיר וממשקי ה-API של ProjectedTestRule

ספריית Jetpack Projected עוזרת לגשר בין חוויות השימוש באפליקציה בטלפון לבין שדה הראייה של המשתמש. הוספנו את Device Availability API,שמאחד את מצב השימוש ואת אותות הקישוריות לערכים סטנדרטיים של Lifecycle.State Android. כך אפשר להתאים את התנהגות האפליקציות בהתאם לכך שהמכשיר עונד או לא.

val xrDevice = XrDevice.getCurrentDevice(projectedContext)

// Observe the device lifecycle flow
xrDevice.getLifecycle().currentStateFlow
    .collect { state ->
        when (state) {
            Lifecycle.State.STARTED -> { /* Device is available (worn) */ }
            Lifecycle.State.CREATED -> { /* Device is unavailable (not worn) */ }
            Lifecycle.State.DESTROYED -> { /* Device is DISCONNECTED */ }
        }
    }

כדי לפשט את הבדיקות, ה-API החדש ProjectedTestRule בארטיפקט של הבדיקות הצפויות מבצע אוטומציה של הגדרת סביבות בדיקה צפויות. כך תוכלו לכתוב בדיקות יחידה (unit tests) נקיות ואמינות בלי קוד boilerplate.

// from the 'androidx.xr.projected:projected-testing:1.0.0-alpha07' artifact
@get:Rule
val projectedTestRule = ProjectedTestRule()

@Test
fun testProjectedContextInitialization() {
    // by default, ProjectedTestRule automatically creates and connects
    // a projected device before each test
    val projectedContext = ProjectedContext.createProjectedDeviceContext(context)

    // assert the projected context is successfully initialized
    assertThat(projectedContext).isNotNull()
}

‫Jetpack Compose Glimmer: Google Sans Flex ורכיבים חדשים

ספריית ממשק המשתמש שלנו למשקפיים עם תצוגה, Jetpack Compose Glimmer, כוללת עכשיו את Google Sans Flex לשיפור הקריאוּת בתצוגות אופטיות שקופות. הוספנו גם כמה רכיבים אינטראקטיביים:

  • ערימות: קבוצות שמותאמות לשימוש במשטח מגע, שבהן מוצג פריט אחד בכל פעם.
  • צ'יפים של כותרות: מספקים סיווג והקשר לכרטיסי תוכן.
glimmer (1).gif

יצירת חוויות עשירות למשקפי XR ולמשקפי XR עם חיבור קווי

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

מעבר מגרסת בטא לארכיטקטורה מודרנית

סביבת זמן הריצה של XR,‏ Jetpack SceneCore ותכונות התפיסה של ARCore for Jetpack XR (‏Depth Maps,‏ Eye/Hand Tracking,‏ Hit Testing ו-Spatial Anchors) יעברו בקרוב לגרסת בטא, ולכן ייעלנו את ממשקי Jetpack XR API. הסרנו חבילות Guava ו-RxJava3 מדור קודם, ועברנו לארכיטקטורה מודרנית שמתמקדת ב-Kotlin.

‫Jetpack SceneCore: glTF ורשתות בהתאמה אישית

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

// Create a new PBR material
pbrMaterial = KhronosPbrMaterial.create(
    session = xrSession,
    alphaMode = AlphaMode.OPAQUE
)

// Load a texture.
val texture = Texture.create(
    session = xrSession,
    path = Path("textures/texture_name.png")
)

// Apply the texture and configure occlusion to define how the material handles ambient lighting.
pbrMaterial.setOcclusionTexture(
    texture = texture,
    strength = 0.5f
)

// Access the hierarchy of nodes within the model entity.
val entityNodes = entity.nodes

// Find the specific node to apply the material override.
val myEntityNode = entityNodes.find { it.name == "node_name" }

// Apply the PBR material to the node.
myEntityNode?.setMaterialOverride(
   material = newMaterial
)

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

// Create the mesh
val roadMesh =
    CustomMesh.BuilderFromMeshData(session, roadVertexLayout)
        .addVertexData(ByteBufferRegion(roadDataBuffer, 0, vertexDataSize))
        .setIndexData(ByteBufferRegion(roadDataBuffer, vertexDataSize, indexDataSize))
        .setTopology(MeshSubsetTopology.TRIANGLES)
        .build()

// Define the material
val roadMaterial = KhronosPbrMaterial.create(session, AlphaMode.OPAQUE)

// Instantiate the entity using the custom mesh and material
val roadEntity =
    MeshEntity.create(
        session,
        roadMesh,
        listOf(roadMaterial),
        pose = roadPose,
    )

‫Compose for XR: תמיכה מקורית ב-glTF

עכשיו יש לנו תמיכה מובנית ב-glTF ישירות ב-Compose for XR עם  SpatialGltfModel. אפשר להשתמש ב-SpatiallGltfModelState כדי לגשת ל-nodes ול-animations במודל glTF, או להשתמש בהם כדי להוסיף טקסטורות וחומרים למודלים התלת-ממדיים.

val myGltfModelState = rememberSpatialGltfModelState(
        source = SpatialGltfModelSource.fromPath(
            Paths.get("models/my_animated_model.glb")
        )
    )

    val myGltfAnimation =
        myGltfModelState.animations.find { it.name == "animation_name" }

    DisposableEffect(myGltfAnimation) {
        myGltfAnimation?.loop()

        onDispose {
            myGltfAnimation?.stop()
        }
    }

    SpatialGltfModel(state = myGltfModelState, modifier = modifier)

‫ARCore for Jetpack XR: גרסת Preview של Geospatial API למשקפי XR עם חיבור קווי

בנוסף, אנחנו מספקים גרסת טרום-השקה מוקדמת של Geospatial API למשקפי XR עם חיבור קווי ב-ARCore for Jetpack XR. העדכון הזה מאפשר הצמדה מדויקת של תוכן דיגיטלי למיקומים בעולם האמיתי ביותר מ-87 מדינות.

בעזרת שילוב של מערכת מיקום חזותי (VPS) של ARCore עם יכולות ההסקה והשמע של Gemini Live API, אתם יכולים ליצור חוויות מודעות-הקשר שמבינות גם את המיקום וגם את הפוזיציה של המשתמש. תארו לעצמכם סיור הליכה מרהיב עם הנחיות מ-AI, שכולל תיאורי אודיו בזמן אמת של מקומות סמוכים, ומשלב בצורה חלקה מידע דיגיטלי עם הסביבה הפיזית.

מתחילים לבנות את העתיד כבר היום

זה זמן מצוין לפתח ל-Android XR. ה-SDK של Jetpack XR עובר בקרוב לגרסת בטא, ויש לכם גישה למגוון רחב של כלים חדשים. כדאי לעיין בכל אחד מהתחומים הבאים כדי להכין את חוויות השימוש באפליקציה שלכם ל-XR.  

כדאי לקרוא את התיעוד, לעיין בדוגמאות ולבדוק את ניסויי ה-XR

באתר הרשמי למפתחים של Android אפשר למצוא מדריכים טכניים מלאים, מאמרי העזרה של ה-API והוראות להגדרת האמולטור החדש. דוגמאות וניסויים שיעוררו בכם השראה. כאן אפשר לראות איך השתמשנו בממשקי ה-API האלה כדי ליצור פריסות מרחביות סוחפות, לטעון מודלים תלת-ממדיים, להשתמש באודיו מרחבי ועוד.

מה חדש במנועי משחקים

הוספנו תמיכה רשמית ב-Unreal Engine וב-Godot, והשקנו שני כלים חדשים להאצת הפיתוח ל-Android XR באמצעות Unity ו-Android XR Interaction Framework. בנוסף, על סמך המשוב שקיבלנו, אנחנו משיקים את Android XR Engine Hub כדי לאפשר לכם להפעיל את החוויות שלכם ישירות מהמנוע המועדף עליכם.

הגשת בקשה להצטרפות לתוכנית Android XR Developer Catalyst

אל תפספסו את ההזדמנות לפתח עבור חומרת Android XR העדכנית ביותר. הגישו בקשה היום כדי לקבל גישה לציוד טרום-השקה, כולל אב טיפוס של משקפיים עם אודיו ומשקפיים עם תצוגה פנימית ופרויקט Aura של XREAL.

מידע נוסף והגשת בקשה

אנחנו מחכים לראות את חוויות ה-XR המדהימות שתבנו, ככל שנתקדם לקראת השקת מכשירי Android XR נוספים בהמשך השנה!

אפשר לקרוא את ההודעה הזו ואת כל העדכונים מ-Google I/O 2026 בכתובת io.google.

נכתב על ידי:
להמשך קריאה