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

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

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

אנחנו שמחים להשיק היום את גרסת Developer Preview 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 של Device Availability ו-ProjectedTestRule

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

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 testing) נקיות ומהימנות בלי קוד 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
)

אנחנו גם מוסיפים את התכונה Custom Meshes (רשתות בהתאמה אישית) ל-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: תצוגה מקדימה של Geospatial API למשקפי XR עם חוט

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

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

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

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

נכתב על ידי:

להמשך הקריאה