Wiadomości o usługach

Aktualizacje pakietu SDK Android XR: przedstawiamy wersję przedpremierową 4 dla programistów

Czas czytania: 5 minut

Z przyjemnością udostępniamy dziś czwartą wersję przedpremierową pakietu SDK Android XR dla programistów. Nadal skupiamy się na ujednolicaniu tworzenia aplikacji na różne urządzenia, takie jak gogle, przewodowe okulary XR i inteligentne okulary. Aby nasza platforma była bardziej intuicyjna, wprowadzamy bardziej opisowe nazwy naszych urządzeń. Okulary z AI to teraz okulary audio, a okulary z AI z wyświetlaczem to teraz okulary z wyświetlaczem. Zmiany te pojawią się w naszej dokumentacji już dziś.

Ta wersja zawiera wiele aktualizacji, które pomogą Ci tworzyć niesamowite aplikacje na urządzenia z XR, umożliwiać bardziej wciągające wrażenia na goglach XR i upraszczać tworzenie aplikacji rozszerzonej rzeczywistości na okularach audio i okularach z wyświetlaczem. Wkrótce oficjalnie udostępnimy w wersji beta nasze podstawowe biblioteki, w tym XR Runtime, Jetpack SceneCore i ARCore dla Jetpack XR.

Aby zapewnić Ci wcześniejszy dostęp do sprzętu i zasobów do tworzenia wciągających i rozszerzonych treści na nadchodzące urządzenia, takie jak okulary wyświetlające obraz i okulary audio oraz Project Aura od XREAL, ogłaszamy program Android XR Developer Catalyst. Dowiedz się więcej i prześlij zgłoszenie już dziś. 

Tworzenie rozszerzonych doświadczeń na potrzeby okularów audio i wyświetlających

Czwarta wersja przedpremierowa dla programistów zawiera nowe interfejsy API, które pomagają tworzyć i testować aplikacje.

Jetpack Projected: interfejsy API Device Availability i ProjectedTestRule

Biblioteka Jetpack Projected pomaga przenieść aplikacje z telefonu do pola widzenia użytkownika. Dodaliśmy interfejs Device Availability API,który łączy sygnały dotyczące stanu urządzenia i łączności w standardowe wartości Androida Lifecycle.State. Dzięki temu możesz dostosowywać działanie aplikacji w zależności od tego, czy urządzenie jest noszone.

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 */ }
        }
    }

Aby uprościć testowanie, nowy interfejs API ProjectedTestRule w artefakcie testowania prognozowanego automatyzuje konfigurowanie prognozowanych środowisk testowych. Ułatwia to pisanie przejrzystych i niezawodnych testów jednostkowych bez powtarzalnego kodu.

// 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 i nowe komponenty

Nasza biblioteka interfejsu do okularów z wyświetlaczem, Jetpack Compose Glimmer, zawiera teraz Google Sans Flex, co poprawia czytelność na optycznych wyświetlaczach przezroczystych. Dodaliśmy też kilka interaktywnych komponentów:

  • Stosy: zaprojektowane dla grup zoptymalizowanych pod kątem touchpada, wyświetlające po 1 elemencie.
  • Etykiety tytułów: zapewniają kategoryzację i kontekst kart treści.
glimmer (1).gif

Tworzenie środowisk immersyjnych na gogle XR i przewodowe okulary XR

Jeśli chcesz tworzyć w pełni immersyjne rozwiązania na gogle XR i przewodowe okulary XR, mamy dla Ciebie kilka ważnych nowości.

Przejście do wersji beta i nowoczesna architektura

Środowisko wykonawcze XR, Jetpack SceneCore i funkcje ARCore dla Jetpack XR (mapy głębi, śledzenie oczu i dłoni, testowanie trafień i kotwice przestrzenne) wkrótce przejdą do wersji beta, dlatego uprościliśmy interfejsy Jetpack XR API. Usunęliśmy starsze pakiety Guava i RxJava3 na rzecz nowoczesnej architektury opartej przede wszystkim na języku Kotlin.

Jetpack SceneCore: glTF i niestandardowe siatki

Rozszerzamy możliwości modeli 3D, dodając możliwość dostrajania modeli 3D i uzyskiwania dostępu do określonych węzłów w modelu 3D. Za pomocą GltfModelNode możesz modyfikować właściwości, takie jak pozycja, materiały i tekstury, a nawet uruchamiać animacje dla określonych węzłów.

// 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
)

Wprowadzamy też niestandardowe siatki w SceneCore. Siatki niestandardowe umożliwiają programowe tworzenie geometrii na bieżąco, co jest idealne do tworzenia niestandardowych modeli 3D. Ta funkcja zostanie wprowadzona jako eksperymentalna, więc wypróbuj ją i daj nam znać, co o niej myślisz.

// 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: natywna obsługa glTF

W Compose for XR mamy teraz natywną obsługę glTF bezpośrednio w SpatialGltfModel. Używaj tego parametru razem z SpatiallGltfModelState, aby uzyskać dostęp do węzłów i animacji w modelu glTF lub używać ich do dodawania tekstur i materiałów do modeli 3D.

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 w Jetpacku XR: wersja przedpremierowa interfejsu Geospatial API dla przewodowych okularów XR

Udostępniamy też wczesną wersję przedpremierową interfejsu Geospatial API dla przewodowych okularów XR w ARCore dla Jetpack XR. Ta aktualizacja umożliwia precyzyjne zakotwiczanie treści cyfrowych powiązanych z lokalizacjami w prawdziwym świecie w ponad 87 krajach.

Łącząc system pozycjonowania wizualnego (VPS) ARCore z funkcjami rozumowania i audio interfejsu Gemini Live API, możesz tworzyć rozwiązania dopasowane kontekstowo, które rozpoznają zarówno lokalizację, jak i pozycję użytkownika. Wyobraź sobie, że tworzysz immersyjną wycieczkę pieszą z przewodnikiem AI, która zapewnia w czasie rzeczywistym opisy dźwiękowe pobliskich miejsc, płynnie łącząc informacje cyfrowe ze środowiskiem fizycznym.

Zacznij budować przyszłość już dziś

To świetny czas na tworzenie aplikacji na Androida XR. Wkrótce udostępnimy wersję beta pakietu Jetpack XR SDK, a Ty będziesz mieć do dyspozycji wiele nowych narzędzi. Zapoznaj się z każdym z tych obszarów, aby przygotować aplikację na XR.  

Przeczytaj dokumentację, zapoznaj się z przykładami i sprawdź eksperymenty XR

Pełne przewodniki techniczne, dokumentację interfejsu API i instrukcje konfigurowania nowego emulatora znajdziesz w oficjalnej witrynie dla deweloperów aplikacji na Androida. Zainspiruj się naszymi próbkami i eksperymentami. Zobacz, jak wykorzystaliśmy te interfejsy API do tworzenia wciągających układów przestrzennych, wczytywania modeli 3D, odkrywania dźwięku przestrzennego i nie tylko.

Sprawdź nowości dotyczące silników gier

Dodaliśmy oficjalną obsługę Unreal Engine i Godot oraz wprowadziliśmy 2 nowe narzędzia, które przyspieszą tworzenie aplikacji na Androida XR za pomocą Unity i Android XR Interaction Framework. Na podstawie Waszych opinii wprowadzamy Android XR Engine Hub, który umożliwi Ci uruchamianie aplikacji bezpośrednio z wybranego silnika.

Zgłoś się do Programu Catalyst dla deweloperów Androida XR

Nie przegap okazji, aby tworzyć aplikacje na najnowsze urządzenia z Androidem XR. Zgłoś się już dziś, aby uzyskać dostęp do sprzętu przedpremierowego, w tym do prototypu okularów audio i okularów z wyświetlaczem oraz do Project Aura od XREAL.

Więcej informacji i możliwość zgłoszenia się

Z niecierpliwością czekamy na niesamowite aplikacje XR, które stworzysz, gdy jeszcze w tym roku wprowadzimy na rynek więcej urządzeń z Androidem XR.

Zapoznaj się z tym ogłoszeniem i wszystkimi aktualizacjami z konferencji Google I/O 2026 na stronie io.google.

Autorzy:
Czytaj dalej