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
7 października 2026 r. - 1.0.0-rc02 - -

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 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-rc02"
}

Kotlin

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

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

Prześlij opinię

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 nową kartę, 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-rc02

7 października 2026 r.

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

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że OpenXrRuntime nie mogło skonfigurować sesji, gdy śledzenie obrazów rozszerzonych było niedostępne. (I8b9759)
  • Rozwiązaliśmy kilka problemów, w tym: ulepszyliśmy zarządzanie pamięcią w XrInstanceManager za pomocą applicationContext, rozwiązaliśmy potencjalne problemy związane z cyklem życia, upraszczając mechanizmy buforowania Session i Scene, oraz ulepszyliśmy ReferenceCleaner, aby zapewnić bezpieczne dla wątków rejestracje czyszczenia i jawne usuwanie. (Id0b76c)

Wersja 1.0.0-rc01

9 września 2026 r.

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

Wersja 1.0.0-beta02

12 sierpnia 2026 r.

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

Poprawki błędów

  • Rozwiązanie problemu z jednoczesnością w OpenXR trwałości kotwicy. (I15c8b)
  • Więcej zajęć z zastosowaniem kontenera toString() na potrzeby debugowania. (I587e8)

Wersja 1.0.0-beta01

15 lipca 2026 r.

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

Zmiany w interfejsie API

  • Zaktualizowano modyfikator zmiany rozmiaru, aby używać ResizePolicy zamiast 2 modyfikatorów (I7fb0f, b/496257436, b/519672992)
  • Dodano ruchome przeciążenie z parametrem movePolicy i wycofano parametry transformingMovable i movable (Ic88c1, b/481781189)
  • Usunięto TrackingState.TRACKING_DEGRADED z publicznego interfejsu API i zamiast tego mapujemy stany obniżonej wydajności środowiska wykonawczego na PAUSED. Zaktualizuj TrackingState, aby używać wyliczeń zamiast wartości całkowitych w przypadku konwersji ciągów znaków i konwersji w czasie działania. (I3eb5b, b/524326338)
  • Zmieniliśmy funkcję Converted Session.create na funkcję zawieszającą. (I5d27f)
  • Wycofano ProjectedPermissionsResultContract (I141d5, b/515699436)
  • Zmieniono nazwę AnchorEntity na AnchorSpace (Ifa95e, b/513619219)

Wersja 1.0.0-alpha15

17 czerwca 2026 r.

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

Zmiany w interfejsie API

  • Pole „HitResult.createAnchor” zostało usunięte. Deweloperzy mogą utworzyć kotwicę reprezentującą HitResult, jeśli śledzony element wyniku jest Anchorable, podając pozycję trafienia do funkcji createAnchor obiektu Anchorable. (Ia851e)
  • Pole „AnchorUnsupportedObject” zostało usunięte. Nie jest już zgłaszany przez środowisko wykonawcze JXR ARCore. (Ia851e)
  • androidx.xr.arcore.Anchor i androidx.xr.arcore.ArDevice teraz implementują androidx.xr.arcore.Trackable. (I57b65)
  • Pola Depth.left, Depth.right i Depth.mono nie mogą już mieć wartości null (I1fc5e)
  • Face.getUserFace nie może już mieć wartości null (I0eac1)
  • Pola RenderViewpoint.left, RenderViewpoint.right i RenderViewpoint.mono nie mogą już mieć wartości null (Icf7fa).
  • Hand.left i Hand.right nie mogą mieć wartości null (Icef37).
  • Dodano QrCode API (Ia0bbe)

Wersja 1.0.0-alpha14

19 maja 2026 r.

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

Zmiany w interfejsie API

  • Wyłączamy GeospatialMode.VPS_AND_GPS na rzecz GeospatialMode.SPATIAL i wprowadzamy nowy tryb śledzenia o niższym zużyciu energii, GeospatialMode.INERTIAL, który korzysta tylko z IMU i GPS-a. (I1e6cd)
  • Niestandardowe klasy wyjątków kotwic: AnchorInvalidUuidException, AnchorNotAuthorizedException, AnchorUnsupportedLocationException, AnchorRuntimeFailureException i AnchorUnsupportedObjectException są teraz instancjami RuntimeException, które nie są przeznaczone do sprawdzania. (I9356e)
  • Dodano interfejs ArCoreTestRule API, w tym TestArDevice, TestAugmentableObject, TestDepthMap, TestEye, TestFace, TestGeospatial, TestHand, TestPlane, TestRenderViewpoint i TestTrackable (I0ad3c)
  • Usuwa AnchorLoadInvalidUuid, AnchorCreateUnsupportedObject, AnchorCreateUnsupportedLocation i AnchorCreateNotAuthorized. Wszystkie te błędy są teraz wyjątkami w czasie działania. Usuwa AnchorCreateIllegalState. W większości przypadków zastąpiono go wartością AnchorCreateTrackingUnavailable. Dodaje klasę AnchorException i klasy pochodne AnchorInvalidUuidException, AnchorNotAuthorizedException, AnchorUnsupportedLocationException, AnchorRuntimeFailureException i AnchorUnsupportedObjectException. (I4c4dd)

Wkład zewnętrzny

  • Dodano interfejs API AugmentedImage do śledzenia znaczników niestandardowych (I0cf09)

Wersja 1.0.0-alpha13

6 maja 2026 r.

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

Zmiany w interfejsie API

  • TrackingState i VpsAvailabilityResult zostały przeniesione do androidx.xr.arcore package, a typy w androidx.xr.runtime są teraz wycofane. (Ic7930, b/480462213)
  • Zmieniono nazwę Plane.Type na PlaneType. (I8c90c, b/482675376)
  • Zmieniono nazwę Hand.HandSide na HandSide. (Ica562, b/482675376)
  • Zmieniono nazwę Plane.Label na PlaneLabel. (Ic6b67, b/482675376)
  • Zmieniono nazwę Geospatial.Surface na GeospatialSurface. (I1a8be, b/482675376)
  • Zmieniono nazwę Geospatial.State na GeospatialState. (I203fa, b/482675376)
  • Przeniesiono interfejs API NativeData do biblioteki xr:runtime:runtime. (I87954, b/494251500)
  • Funkcje Session.create i Session.configure nie są już wyczerpujące i wymagają klauzul else w instrukcjach when. (I9885e, b/495805998, b/495805998)
  • Środowisko wykonawcze androidx.xr.runtime.FieldOfView zostało wycofane. Zamiast niej użyj zasady androidx.xr.runtime.math.FieldOfView. (Ia01a0, b/480233045)
  • Zmieniliśmy Orbiter, aby używał OrbiterAnchorPoint + VolumeOffset lub OrbiterPoseProvider zamiast pozycji, przesunięcia, typu przesunięcia, wyrównania i wysokości. Usunęliśmy też parametr shouldRenderInNonSpatial. Jeśli deweloper nie chce, aby orbiter był renderowany w przestrzeni nieprzestrzennej, powinien umieścić go w instrukcji warunkowej i sprawdzić wartość SpatialCapabilities. (I9fbb3, b/462428503)
  • Dodano modyfikatory, które można przenosić. Obecnie te modyfikatory działają dobrze w przypadku SpatialPanels i SpatialExternalSurface. Wkrótce będą one też obsługiwane w przypadku SpatialGltfModels. Chcemy jednak, aby były one dobrze obsługiwane na wszystkich urządzeniach SubspaceComposables. (I9a3cd, b/479530787, b/478935063, b/478935063)
  • Deweloperzy powinni obserwować ArDevice.stateprzepływ monitorowaniaState.trackingState i dostosowywać renderowanie aplikacji lub ostrzeżenia odpowiednio do dokładności śledzenia. (Ic00f0, b/445466590)
  • Zmieniono nazwy wartości typu wyliczeniowego HandJointType. (Ifbc83, b/482670596)
  • Zmieniono nazwy FaceConfidenceRegion stałych. (Ia62d5, b/482670596)
  • Zmieniono nazwy stałych FaceBlendShapeType. (I33b8b, b/482670596)
  • Dodano: CreatePoseFromGeospatialPoseErrorInternal i CreateGeospatialPoseFromPoseErrorInternal. (I4bcf1, b/482666615)
  • Zmieniono nazwę DeviceTrackingMode.LAST_KNOWN na SPATIAL_LAST_KNOWN (z wycofanym elementem zastępczym), dodano INERTIAL_LAST_KNOWN do śledzenia 3DoF i dodano TRACKING_DEGRADED do TrackingState. (Ie661c, b/445466590)
  • Wycofano GroupEntity. Aby mieć obiekt z samą podstawową funkcjonalnością, wywołaj funkcję Entity.create, która zwróci interfejs obiektu. (I4c450, b/473867483)
  • Dodano interfejs API XrLog. Ustaw wartość XrLog.isEnabled na true, aby włączyć rejestrowanie w JetpackXR, i użyj XrLog.Level, aby ustawić poziom rejestrowania. (I76a1f, b/463460895, b/487378441)

Poprawki błędów

  • Dodaj obsługę stanu śledzenia urządzenia do urządzeń OpenXR. (I91485, b/445466590)

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.Eye i androidx.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 wartość FakeRuntimeAnchor.ANCHOR_RESOURCE_LIMIT na FakeRuntimeAnchor.anchorResourceLimit. (I90841, b/431992235)
  • Oznaczenie interfejsu TiltGesture API 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 przez zaktualizowanie pliku 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

  • Wprowadzamy interfejs TiltGesture API, który zapewnia reaktywny interfejs Flow do stabilnego wykrywania stanu nachylenia urządzenia (GÓRA/DÓŁ) wraz z postępem przejścia. (Ic269f, b/448152779)
  • ARCore w Jetpack XR korzysta teraz z mechanizmu rejestrowania środowiska wykonawczego XR. Więcej informacji znajdziesz tutaj: 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 dla Jetpacka 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 dodano 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 funkcji ARCore została przeniesiona do modułu xr:arcore:arcore-testing. (I25469)
  • Dodanie ArDevice i RenderViewpoint, 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)
  • HandJointType został przeniesiony 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-alpha05 i androidx.xr.arcore:arcore-rxjava3:1.0.0-alpha05 są udostępnione. 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)
  • Dodaj interfejs ARCore API dla checkVpsAvailability (Idbded)
  • Dodano funkcje rozszerzeń stateFlowable do :xr:arcore:arcore-rxjava3, aby mogli z nich korzystać deweloperzy 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.createAsync w GltfModel.kt. Funkcje asynchroniczne w GltfModel zostaną usunięte. (I0af60)
  • Ta biblioteka używa teraz adnotacji o wartości null JSpecify, które są używane w typie. Deweloperzy Kotlin powinni używać tego argumentu kompilatora, aby wymusić prawidłowe użycie: -Xjspecify-annotations=strict (jest to domyślne ustawienie od wersji 2.1.0 kompilatora Kotlin) (Ia8420, b/326456246)
  • Dodano funkcje rozszerzeń subscribeAsFlowable do :xr:arcore:arcore-rxjava3, aby mogli z nich korzystać deweloperzy 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)
  • TrackingState i HandJointType 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

  • Dodaliśmy obsługę śledzenia rąk. Aby uzyskać dostęp do informacji o śledzeniu, użyj metod Hand.left i Hand.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ż krytycznej awarii 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łogi, ściany i blaty). Więcej informacji o korzystaniu z ARCore w Jetpack XR znajdziesz w przewodniku dla programistów.

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

  • Plane: korzystaj z płaszczyzn, aby poznawać otaczający Cię świat. Każda płaszczyzna ma Label, który opisuje ją 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 rzeczywistym świecie. Kotwice można przytwierdzać do konkretnej lokalizacji w przestrzeni (za pomocą create) lub do Trackable (za pomocą createAnchor).

    • Kotwice można wykorzystywać wielokrotnie w różnych sesjach. 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.

    • Punkty zakotwiczenia 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żliwia naturalne interakcje użytkowników za pomocą hitTest. Test trafienia używa Ray, aby określić, z którymi treściami się 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.

  • Używanie w emulatorze 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 błędem kodu natywnego i natychmiast przerywać działanie.

  • W pewnych okolicznościach podczas wywoływania funkcji persist może zostać błędnie zgłoszony wyjątek RuntimeException z komunikatem „Anchor was not persisted” (Kotwica nie została zapisana). W takich przypadkach funkcja nadal będzie działać, a kotwica zostanie zapisana. Jako obejście tego problemu zalecamy umieszczenie wywołania funkcji persist w bloku try.