ARCore dla Jetpack XR

Wprowadź treści cyfrowe do rzeczywistego świata dzięki możliwościom percepcji.
Najnowsza aktualizacja Wersja stabilna Wersja kandydująca do publikacji Wersja beta Wersja alfa
6 maja 2026 r. - - - 1.0.0-alpha13

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 od potrzebnych artefaktów w pliku build.gradle aplikacji lub modułu:

Odlotowe

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

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

Kotlin

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

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

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

Prześlij opinię

Twoja opinia pomoże nam ulepszyć Jetpack. Jeśli odkryjesz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Zanim utworzysz nowy problem, zapoznaj się z istniejącymi problemami w tej bibliotece. Możesz dodać swój głos do istniejącego problemu, klikając przycisk gwiazdki.

Utwórz nowy problem

Więcej informacji znajdziesz w dokumentacji narzędzia do śledzenia problemów Issue Tracker documentation.

Wersja 1.0

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 commity.

Zmiany w interfejsie API

  • TrackingState i VpsAvailabilityResult zostały przeniesione do androidx.xr.arcore package, a typy w androidx.xr.runtime zostały 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)
  • Session.create i Session.configure nie są już wyczerpujące i wymagają klauzuli else w instrukcjach when. (I9885e, b/495805998, b/495805998)
  • androidx.xr.runtime.FieldOfView został wycofany. Zamiast niego używaj androidx.xr.runtime.math.FieldOfView. (Ia01a0, b/480233045)
  • Zmieniono Orbiter tak, aby używał OrbiterAnchorPoint + VolumeOffset lub OrbiterPoseProvider zamiast pozycji, przesunięcia, offsetType, wyrównania i wysokości. Usunięto też parametr shouldRenderInNonSpatial. Jeśli deweloper nie chce, aby Orbiter renderował w przestrzeni nieprzestrzennej, powinien umieścić go w instrukcji if i sprawdzić SpatialCapabilities. (I9fbb3, b/462428503)
  • Dodano modyfikatory ruchome. Te modyfikatory działają obecnie dobrze w przypadku SpatialPanels i SpatialExternalSurface. Wkrótce będą też obsługiwane w przypadku SpatialGltfModels. Jednak naszym celem jest, aby były dobrze obsługiwane we wszystkich SubspaceComposables. (I9a3cd, b/479530787, b/478935063, b/478935063)
  • Deweloperzy powinni obserwować przepływ ArDevice.state, aby monitorować State.trackingState i odpowiednio dostosowywać renderowanie lub ostrzeżenia w aplikacji na podstawie dokładności śledzenia. (Ic00f0, b/445466590)
  • Zmieniono nazwy wartości enum HandJointType. (Ifbc83, b/482670596)
  • Zmieniono nazwy stałych FaceConfidenceRegion. (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 rezerwowym), dodano INERTIAL_LAST_KNOWN do śledzenia 3DoF i dodano TRACKING_DEGRADED do TrackingState. (Ie661c, b/445466590)
  • Wycofano GroupEntity. Aby mieć encję z podstawową funkcjonalnością encji, wywołaj Entity.create, która zwróci interfejs encji. (I4c450, b/473867483)
  • Dodano interfejs API XrLog. Ustaw XrLog.isEnabled na true, aby włączyć logowanie w JetpackXR, i użyj XrLog.Level, aby ustawić poziom logowania. (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 commity.

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)
  • Zmieniono FakeRuntimeAnchor.ANCHOR_RESOURCE_LIMIT na FakeRuntimeAnchor.anchorResourceLimit. (I90841, b/431992235)
  • Oznaczono interfejs API TiltGesture jako eksperymentalny, ponieważ w przyszłości może zostać zmieniony lub usunięty. Aby używać 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 commity.

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 commity.

Nowe funkcje

  • Wprowadzono interfejs API TiltGesture, który udostępnia reaktywny Flow do stabilnego wykrywania stanu pochylenia urządzenia (GÓRA/DÓŁ) z postępem przejścia. (Ic269f, b/448152779)
  • ARCore dla Jetpack XR korzysta teraz z mechanizmu logowania XR Runtime. Więcej informacji znajdziesz w androidx.xr.runtime.Log. (l52735, b/448697662)

Zmiany w interfejsie API

  • Geospatial.createPoseFromGeospatialPose działa teraz na urządzeniach z 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 commity.

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 commity.

Nowe funkcje

  • ARCore dla Jetpack XR obsługuje teraz urządzenia, na których dostępne są Usługi Google Play dla AR.
  • Dodano interfejsy API Geospatial 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 commity.

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 commity.

Zmiany w interfejsie API

  • Obsługa testowania ARCore została przeniesiona do modułu xr:arcore:arcore-testing. (I25469)
  • Dodano ArDevice i RenderViewpoint, aby umożliwić aplikacjom pobieranie pozycji urządzenia i konfiguracji wyświetlania na potrzeby renderowania. (Ib7e3f)
  • Zmieniono nazwy enum HandJointType z prefiksem 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 z pozycjami stawów w formacie, który umożliwia łatwy dostęp do aplikacji zoptymalizowanych pod kątem wydajności. (I55e27)

Wersja 1.0.0-alpha05

30 lipca 2025 r.

Publikacja 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. Wersja 1.0.0-alpha05 zawiera te commity.

Nowe funkcje

  • Dodaj getPrimaryHandSide, aby deweloper mógł uzyskać informacje o stronie ręki (I270bd).
  • Dodaj interfejs API sprawdzania dostępności VPS Geospatial (I58573).
  • Dodaj interfejs API ARCore do checkVpsAvailability (Idbded)
  • Dodano funkcje rozszerzeń stateFlowable do :xr:arcore:arcore-rxjava3 na potrzeby deweloperów Java. (I083aa, b/427247794)

Zmiany w interfejsie API

  • Zmieniono nazwy wartości *Mode w konfiguracji, 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. Deweloperzy Java mogą korzystać z biblioteki xr:arcore:arcore-rxjava3, aby uzyskać 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. Deweloperzy Java mogą korzystać z biblioteki xr:arcore:arcore-guava, aby uzyskać dostęp do zgodnych interfejsów API. (Iffcb4, b/422773524)
  • Dodano Anchor.persistAsync() do AnchorGuava na potrzeby deweloperów Java. (I4af1c, b/425984631)
  • Dodano Earth.createAnchorOnSurfaceAsync(Session, Double, Double, Double, Quaternion, Surface) do EarthGuava na potrzeby deweloperów Java. (I66357, b/425992992)
  • Deweloperzy Java będą używać funkcji rozszerzeń GltfModel.createAsync w GltfModel.kt. Funkcje asynchroniczne w GltfModel zostaną usunięte. (I0af60)
  • Ta biblioteka używa teraz adnotacji o braku wartości null JSpecify, które są używane w typach. 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 na potrzeby 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 commity.

Zmiany w interfejsie API

  • Projekty opublikowane w Kotlin 2.0 wymagają KGP 2.0.0 lub nowszego. (Idb6b5)
  • TrackingState i HandJointType zostały przeniesione z ARCore do Runtime.
  • Hand.State.isActive (boolean) został zmieniony na Hand.State.trackingState (androidx.xr.runtime.TrackingState).
  • Anchor.load zwraca Anchor.AnchorLoadInvalidUuid, jeśli UUID jest nieprawidłowy.

Wersja 1.0.0-alpha03

26 lutego 2025 r.

Publikacja androidx.xr.arcore:arcore:1.0.0-alpha03 bez istotnych zmian od ostatniej wersji alfa. Wersja 1.0.0-alpha03 zawiera te commity.

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 commity.

Nowe funkcje

  • Dodano obsługę śledzenia rąk. Aby uzyskać dostęp do informacji o śledzeniu, użyj 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ż poważnego 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 dla Jetpack XR, inspirowana istniejącą biblioteką ARCore, umożliwia łączenie treści cyfrowych z rzeczywistym światem. Ta biblioteka obejmuje śledzenie ruchu, trwałe kotwice, testowanie trafień i identyfikację płaszczyzn z etykietowaniem semantycznym (np. podłoga, ściany i blaty). Więcej informacji o pracy z ARCore dla Jetpack XR znajdziesz w przewodniku dla programistów.

  • Session: ARCore dla Jetpack XR korzysta z Jetpack XR Runtime, aby obsługiwać swoje funkcje. Aby korzystać z większości interfejsów API ARCore dla Jetpack XR, będziesz używać sesji, więc zapoznaj się z jej dokumentacją.

  • Plane: używaj płaszczyzn, aby zrozumieć otaczający Cię świat. Każda płaszczyzna ma Label, która opisuje ją semantycznie. Możesz użyć subscribe, aby otrzymywać powiadomienia o najnowszych wykrytych płaszczyznach, lub state, aby otrzymywać powiadomienia o zmianach w konkretnej płaszczyźnie.

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

    • Kotwice można ponownie wykorzystywać w różnych sesjach. Możesz użyć persist, aby je zapisać, getPersistedAnchorUuids, aby je wyliczyć, i load, aby je pobrać. Pamiętaj, aby użyć unpersist, gdy nie będą już używane.

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

    • Zapewnij naturalne interakcje użytkownika za pomocą hitTest. Funkcja hitTest używa Ray, aby określić, które treści przecina, i utworzyć Anchor w tej lokalizacji. Rozważ przeprowadzenie testu trafień z InputEvent.

Znane problemy

  • Może wystąpić opóźnienie między wywołaniem unpersist a usunięciem jego UUID z wyników zwracanych przez getPersistedAnchorUuids.

  • 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ę.

  • Obecnie nie można utrwalić kotwicy, która została wcześniej utrwalona i usunięta.

  • Używanie w emulatorze jest obsługiwane, ale działanie może nie być tak stabilne jak w przypadku działania na rzeczywistym urządzeniu. W szczególności wywołania create mogą się nie powieść z powodu błędu kodu natywnego i natychmiast zakończyć działanie.

  • W pewnych okolicznościach podczas wywoływania persist może zostać błędnie zgłoszony RuntimeException z komunikatem „Anchor was not persisted”. W takich okolicznościach funkcja nadal będzie działać, a kotwica zostanie utrwalona. Jako obejście zalecamy umieszczenie wywołania persist w bloku try.