ARCore w Jetpack XR

Wprowadzaj treści cyfrowe do świata rzeczywistego dzięki funkcjom percepcji.
Najnowsza aktualizacja Wersja stabilna Wersja kandydująca do publikacji Wersja beta Wersja alfa
25 marca 2026 r. - - 1.0.0-alpha12

Deklarowanie zależności

Aby dodać zależność od ARCore dla Jetpack XR, musisz dodać do projektu repozytorium Maven Google. Więcej informacji znajdziesz w artykule Repozytorium Maven Google.

Dodaj zależności dotyczące potrzebnych artefaktów w pliku build.gradle aplikacji lub modułu:

Odlotowe

dependencies {
    implementation "androidx.xr.arcore:arcore:1.0.0-alpha12"

    // Optional dependencies for asynchronous conversions
    implementation "androidx.xr.arcore:arcore-guava:1.0.0-alpha12"
    implementation "androidx.xr.arcore:arcore-rxjava3:1.0.0-alpha12"
}

Kotlin

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

    // Optional dependencies for asynchronous conversions
    implementation("androidx.xr.arcore:arcore-guava:1.0.0-alpha12")
    implementation("androidx.xr.arcore:arcore-rxjava3:1.0.0-alpha12")
}

Więcej informacji o zależnościach znajdziesz w artykule Dodawanie zależności kompilacji.

Opinia

Twoja opinia pomoże nam ulepszyć Jetpacka. Jeśli odkryjesz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Zanim utworzysz nowy problem, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz oddać głos na istniejący problem, klikając przycisk gwiazdki.

Tworzenie nowego problemu

Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.

Wersja 1.0

Wersja 1.0.0-alpha12

25 marca 2026 r.

Publikacja androidx.xr.arcore:arcore-*:1.0.0-alpha12 Wersja 1.0.0-alpha12 zawiera te zmiany.

Zmiany w interfejsie API

  • Zmieniono Config.augmentedObjectCategories z listy na zbiór. (I25a64, b/487376359)
  • Typy androidx.xr.arcore.Eyeandroidx.xr.arcore.Hand. (I42438, b/449032900)
  • Dodano przeciążenie Session.create, aby umożliwić przekazywanie kontekstu Androida na potrzeby określania zakresu zasobów. (I7d3fe, b/415805990, b/477386334)
  • Zmienia FakeRuntimeAnchor.ANCHOR_RESOURCE_LIMIT na FakeRuntimeAnchor.anchorResourceLimit. (I90841, b/431992235)
  • Oznaczenie interfejsu API TiltGesture jako eksperymentalnego, ponieważ w przyszłości może on zostać zmieniony lub usunięty. Aby korzystać z tego interfejsu API, włącz @ExperimentalGesturesApi (Ic9858).
  • Dodano możliwość ustawiania kategorii śledzenia AugmentedObject w konfiguracji (I1f6e4, b/480220930)

Poprawki błędów

  • Naprawiono kompilację Chrome, aktualizując plik META-INF/services/ o rzeczywistą lokalizację PerceptionRuntimeFactory. (I7a801, b/481288291)

Wersja 1.0.0-alpha11

25 lutego 2026 r.

Publikacja androidx.xr.arcore:arcore-*:1.0.0-alpha11 Wersja 1.0.0-alpha11 zawiera te zmiany.

Wersja 1.0.0-alpha10

28 stycznia 2026 r.

Publikacja androidx.xr.arcore:arcore-*:1.0.0-alpha10 Wersja 1.0.0-alpha10 zawiera te zmiany.

Nowe funkcje

  • Wprowadza interfejs API TiltGesture, który zapewnia reaktywny Flow do stabilnego wykrywania stanu pochylenia urządzenia (GÓRA/DÓŁ) wraz z postępem przejścia. (Ic269f, b/448152779)
  • ARCore w Jetpacku XR korzysta teraz z mechanizmu logowania środowiska wykonawczego XR. Aby dowiedzieć się więcej, przeczytaj androidx.xr.runtime.Log. (l52735, b/448697662)

Zmiany w interfejsie API

  • Geospatial.createPoseFromGeospatialPose działa teraz na urządzeniach obsługujących OpenXR. (l362c6)

Wersja 1.0.0-alpha09

3 grudnia 2025 r.

Publikacja androidx.xr.arcore:arcore-*:1.0.0-alpha09 Wersja 1.0.0-alpha09 zawiera te zmiany.

Wersja 1.0.0-alpha08

19 listopada 2025 r.

Publikacja androidx.xr.arcore:arcore-*:1.0.0-alpha08 Wersja 1.0.0-alpha08 zawiera te zmiany.

Nowe funkcje

  • ARCore Jetpack XR obsługuje teraz urządzenia, na których dostępne są Usługi Google Play dla AR.
  • Dodano interfejsy Geospatial API do sprawdzania dostępności VPS i konwersji pozycji (I144dc).

Wersja 1.0.0-alpha07

22 października 2025 r.

Publikacja androidx.xr.arcore:arcore-*:1.0.0-alpha07 Wersja 1.0.0-alpha07 zawiera te zmiany.

Poprawki błędów

  • :xr:arcore:arcore-openxr został dodany jako zależność implementacji do :xr:arcore:arcore (I47315, b/446999229)

Wersja 1.0.0-alpha06

24 września 2025 r.

Publikacja androidx.xr.arcore:arcore-*:1.0.0-alpha06 Wersja 1.0.0-alpha06 zawiera te zmiany.

Zmiany w interfejsie API

  • Obsługa testowania ARCore została przeniesiona do modułu xr:arcore:arcore-testing. (I25469)
  • Dodanie uprawnień ArDeviceRenderViewpoint, aby umożliwić aplikacjom pobieranie pozycji urządzenia i konfiguracji wyświetlania na potrzeby renderowania. (Ib7e3f)
  • Zmień nazwy wyliczeń HandJointType, dodając prefiks HAND_JOINT_TYPE_. (I3f7cd)
  • Urządzenie HandJointType zostało przeniesione z xr:runtime:runtime do xr:arcore:arcore. (Iadb9c, b/409058039)
  • Hand.State udostępnia teraz java.nio.FloatBuffer ze wspólnymi pozami w formacie, który umożliwia łatwy dostęp do aplikacji zorientowanych na wydajność. (I55e27)

Wersja 1.0.0-alpha05

30 lipca 2025 r.

androidx.xr.arcore:arcore:1.0.0-alpha05, androidx.xr.arcore:arcore-guava:1.0.0-alpha05androidx.xr.arcore:arcore-rxjava3:1.0.0-alpha05 są dostępne. Wersja 1.0.0-alpha05 zawiera te zmiany.

Nowe funkcje

  • Dodaj getPrimaryHandSide, aby deweloper mógł uzyskać informacje o stronie (I270bd).
  • Dodano interfejs API sprawdzania dostępności VPS w przestrzeni geograficznej (I58573)
  • Dodawanie interfejsu ARCore API do checkVpsAvailability (Idbded)
  • Funkcje rozszerzeń stateFlowable dodane do :xr:arcore:arcore-rxjava3 do użytku przez deweloperów Java. (I083aa, b/427247794)

Zmiany w interfejsie API

  • Nazwy wartości konfiguracji *Mode zostały zmienione, aby odzwierciedlały ich działanie. (I6d247, b/414648065)
  • Główny artefakt ARCore (xr:arcore:arcore) będzie zawierać tylko asynchroniczne interfejsy API w stylu Kotlin. Programiści Java mogą korzystać z biblioteki xr:arcore:arcore-rxjava3, aby uzyskiwać dostęp do zgodnych interfejsów API. (Ia525e, b/422794329)
  • Główny artefakt ARCore (xr:scenecore:scenecore) będzie zawierać tylko asynchroniczne interfejsy API w stylu Kotlin. Programiści Java mogą korzystać z biblioteki xr:arcore:arcore-guava, aby uzyskiwać dostęp do zgodnych interfejsów API. (Iffcb4, b/422773524)
  • Anchor.persistAsync() dodano do AnchorGuava do użytku przez deweloperów Java. (I4af1c, b/425984631)
  • Earth.createAnchorOnSurfaceAsync(Session, Double, Double, Double, Quaternion, Surface) dodano do EarthGuava do użytku przez deweloperów Java. (I66357, b/425992992)
  • Deweloperzy Java będą używać funkcji rozszerzeń dla GltfModel.createAsyncGltfModel.kt. Funkcje asynchroniczne w GltfModel zostaną usunięte. (I0af60)
  • Ta biblioteka korzysta teraz z adnotacji o wartości null JSpecify, które są używane w typie. Aby wymusić prawidłowe użycie, deweloperzy Kotlin powinni użyć tego argumentu kompilatora: -Xjspecify-annotations=strict (jest to domyślna wartość począwszy od wersji 2.1.0 kompilatora Kotlin) (Ia8420, b/326456246).
  • Funkcje rozszerzeń subscribeAsFlowable dodane do :xr:arcore:arcore-rxjava3 do użytku przez deweloperów Java. (Id3e49, b/427277298)

Wersja 1.0.0-alpha04

7 maja 2025 r.

Publikacja androidx.xr.arcore:arcore:1.0.0-alpha04 Wersja 1.0.0-alpha04 zawiera te zmiany.

Zmiany w interfejsie API

  • Projekty wydane w Kotlinie 2.0 wymagają KGP w wersji 2.0.0 lub nowszej. (Idb6b5)
  • TrackingStateHandJointType zostały przeniesione z ARCore do środowiska wykonawczego.
  • Wartość Hand.State.isActive (boolean) została zmieniona na Hand.State.trackingState (androidx.xr.runtime.TrackingState).
  • Anchor.load zwraca Anchor.AnchorLoadInvalidUuid, jeśli identyfikator UUID jest nieprawidłowy.

Wersja 1.0.0-alpha03

26 lutego 2025 r.

androidx.xr.arcore:arcore:1.0.0-alpha03 nie zawiera żadnych istotnych zmian w porównaniu z ostatnią wersją alfa. Wersja 1.0.0-alpha03 zawiera te zmiany.

Wersja 1.0.0-alpha02

12 lutego 2025 r.

Publikacja androidx.xr.arcore:arcore:1.0.0-alpha02 Wersja 1.0.0-alpha02 zawiera te zmiany.

Nowe funkcje

  • Dodano obsługę śledzenia rąk. Aby uzyskać dostęp do informacji o śledzeniu, użyj Hand.leftHand.right.
  • Interfejsy API, które generują kotwicę (Anchor.create, Anchor.load, Plane.createAnchor), zwracają teraz AnchorCreateResult i prawidłowo implementują AnchorCreateResourcesExhausted.

Poprawki błędów

  • Anchor.detach nie powoduje już błędu krytycznego z powodu sytuacji wyścigu z wątkiem aktualizacji sesji.
  • Anchor.create jest bardziej stabilny podczas działania na emulatorze.

Wersja 1.0.0-alpha01

12 grudnia 2024 r.

Publikacja androidx.xr.arcore:arcore-* 1.0.0-alpha01

Funkcje pierwszej wersji

Biblioteka ARCore for Jetpack XR, inspirowana istniejącą biblioteką ARCore, umożliwia łączenie treści cyfrowych ze światem rzeczywistym. Ta biblioteka obejmuje śledzenie ruchu, trwałe punkty zakotwiczenia, testowanie trafień i identyfikację płaszczyzn z etykietowaniem semantycznym (np. podłoga, ściany i blaty). Więcej informacji o korzystaniu z ARCore w Jetpacku XR znajdziesz w przewodniku dla programistów.

  • Session: ARCore w Jetpacku XR korzysta z środowiska wykonawczego Jetpacka XR, aby zapewnić działanie swoich funkcji. Sesja będzie Ci potrzebna do korzystania z większości interfejsów ARCore w Jetpack XR, więc zapoznaj się z jej dokumentacją.

  • Plane: korzystaj z płaszczyzn, aby lepiej poznawać otaczający Cię świat. Każdy samolot ma Label, który opisuje go semantycznie. Możesz użyć subscribe, aby otrzymywać powiadomienia o najnowszych wykrytych samolotach, lub state, aby otrzymywać powiadomienia o zmianach dotyczących konkretnego samolotu.

  • Anchor: połączenie między obiektem wirtualnym a lokalizacją w świecie rzeczywistym. Kotwice można przyczepić do określonej lokalizacji w przestrzeni (za pomocą create) lub do Trackable (za pomocą createAnchor).

    • Kotwice można wykorzystywać wielokrotnie w ramach różnych sesji. Możesz ich używać do przechowywania persist, wyliczania getPersistedAnchorUuids i pobierania load. Pamiętaj, aby unpersist je, gdy nie będą już używane.

    • Kotwice są interoperacyjne między ARCore dla Jetpack XR i Jetpack SceneCore. Możesz utworzyć AnchorEntity za pomocą kotwicy lub, jeśli masz już AnchorEntity, możesz użyć getAnchor, aby pobrać kotwicę pomocniczą.

    • Umożliwiaj naturalne interakcje użytkowników za pomocą hitTest. Test trafienia używa Ray, aby określić, które treści przecina, i na podstawie tej lokalizacji tworzy Anchor. Rozważ przeprowadzenie testu hitTest z poziomu elementu InputEvent.

Znane problemy

  • Od wywołania funkcji unpersist do usunięcia identyfikatora UUID z wyników zwracanych przez funkcję getPersistedAnchorUuids może minąć trochę czasu.

  • create nie sprawdzi, czy system ma wystarczającą ilość zasobów, aby zwrócić nowe kotwice. Utworzenie zbyt dużej liczby kotwic może spowodować awarię.

  • Zapisywanie kotwicy, która została wcześniej zapisana i cofnięta, nie jest obecnie obsługiwane.

  • Korzystanie z emulatora jest obsługiwane, ale działanie może nie być tak stabilne jak na rzeczywistym urządzeniu. W szczególności wywołania funkcji create mogą kończyć się niepowodzeniem z powodu błędu kodu natywnego i natychmiast przerywać działanie.

  • W niektórych przypadkach podczas wywoływania funkcji persist może zostać nieprawidłowo zgłoszony błąd RuntimeException z komunikatem „Anchor was not persisted” (Punkt nie został zapisany). W takich przypadkach funkcja nadal będzie działać, a punkt zostanie zapisany. Jako obejście zalecamy umieszczenie wywołania funkcji persist w bloku try.