ARCore w Jetpack XR

Przenoszenie cyfrowych treści do świata rzeczywistego dzięki funkcjom percepcji.
Ostatnia aktualizacja Wersja stabilna Wersja kandydująca do publikacji Wersja Beta Wersja alfa
7 maja 2025 r. - - - 1.0.0-alpha04

Deklarowanie zależności

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

Dodaj zależności dla artefaktów, których potrzebujesz, w pliku build.gradle aplikacji lub modułu:

Groovy

dependencies {
    implementation "androidx.xr.arcore:arcore:1.0.0-alpha04"
}

Kotlin

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

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 zauważysz 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 zagłosować na istniejący problem, klikając przycisk z gwiazdką.

Tworzenie nowego zgłoszenia

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

Wersja 1.0

Wersja 1.0.0-alpha04

7 maja 2025 r.

Element androidx.xr.arcore:arcore:1.0.0-alpha04 został zwolniony. Wersja 1.0.0-alpha04 zawiera te komisy.

Zmiany w interfejsie API

  • Projekty opublikowane z Kotlin 2.0 wymagają KGP 2.0.0 lub nowszej wersji. (Idb6b5)
  • TrackingStateHandJointType zostały przeniesione z ARCore do Runtime.
  • Nazwa Hand.State.isActive (boolean) została zmieniona na Hand.State.trackingState (androidx.xr.runtime.TrackingState).
  • Jeśli UUID jest nieprawidłowy, funkcja Anchor.load zwraca Anchor.AnchorLoadInvalidUuid.

Wersja 1.0.0-alpha03

26 lutego 2025 r.

androidx.xr.arcore:arcore:1.0.0-alpha03 została wydana bez istotnych zmian od ostatniej wersji alfa. Wersja 1.0.0-alpha03 zawiera te komity.

Wersja 1.0.0-alpha02

12 lutego 2025 r.

Element androidx.xr.arcore:arcore:1.0.0-alpha02 został zwolniony. Wersja 1.0.0-alpha02 zawiera te komity.

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ż krytycznego błędu z powodu warunków wyścigu z wątkiem aktualizacji sesji.
  • Anchor.create jest bardziej stabilny podczas uruchamiania na emulatorze.

Wersja 1.0.0-alpha01

12 grudnia 2024 r.

Element androidx.xr.arcore:arcore-* 1.0.0-alpha01 został zwolniony.

Funkcje dostępne w pierwszej wersji

Biblioteka ARCore dla Jetpacka XR, która powstała na podstawie dotychczasowej biblioteki ARCore, umożliwia łączenie treści cyfrowych ze światem rzeczywistym. Biblioteka ta obejmuje śledzenie ruchu, trwałe kotwy, testowanie trafień i identyfikację płaszczyzny za pomocą etykiet semantycznych (np. podłoga, ściany i blaty). Aby dowiedzieć się więcej o ARCore w Jetpack XR, zapoznaj się z przewodnikiem dla programistów.

  • Session: ARCore dla Jetpacka XR korzysta z biblioteki Jetpack XR Runtime, aby zapewniać działanie funkcji. Sesji używa się do interakcji z większą liczbą interfejsów ARCore dla Jetpack XR API, dlatego zapoznaj się z ich dokumentacją.

  • Plane: używaj płaszczyzn, aby poznawać świat wokół siebie. Każdy samolot ma Label, który opisuje go semantycznie. Możesz użyć subscribe, aby otrzymywać powiadomienia o ostatnio 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. Kotwy można przypiąć do określonej lokalizacji w przestrzeni (za pomocą create) lub do Trackable (za pomocą createAnchor).

    • Kotwic można używać wielokrotnie w różnych sesjach. Możesz ich używać za pomocą funkcji persist (do przechowywania), getPersistedAnchorUuids (do zliczania) i load (do pobierania). Pamiętaj, aby unpersist je usunąć, gdy przestaną być używane.

    • Punkty kotwiczenia są interoperacyjne między ARCore dla Jetpacka XR i Jetpacka SceneCore. Możesz utworzyć AnchorEntity za pomocą zakotwiczenia lub, jeśli masz już AnchorEntity, możesz użyć getAnchor, aby pobrać zakotwiczenie.

    • Zapewnij użytkownikom naturalne interakcje za pomocą hitTest. Funkcja hitTest używa Ray, aby określić, z czym się przecina, i utworzyć Anchor z tego miejsca. Rozważ przeprowadzenie testu hitTest z urządzenia InputEvent.

Znane problemy

  • Pomiędzy wywołaniem funkcji unpersist a usunięciem z wyników zwracanych przez funkcję getPersistedAnchorUuids identyfikatora UUID może minąć pewien czas.

  • create nie sprawdza, czy system ma wystarczające zasoby, aby zwrócić nowe kotwy. Utworzenie zbyt dużej liczby kotwic może spowodować awarię.

  • Zapisywanie punktu odniesienia, który został wcześniej zapisany i usuwany, nie jest obecnie obsługiwane.

  • Aplikacja może być używana w emulatorze, ale jej działanie może nie być tak stabilne jak na rzeczywistym urządzeniu. W szczególności wywołania funkcji create mogą zakończyć się błędem kodu natywnego i natychmiast zakończyć działanie.

  • W pewnych okolicznościach podczas wywołania funkcji persist może zostać błędnie wyrzucony wyjątek RuntimeException z komunikatem „An anchor was not persisted” (An anchor was not persisted). W takich okolicznościach funkcja nadal będzie działać prawidłowo, a kotwnik zostanie zachowany. Jako rozwiązanie zalecamy umieszczenie wywołania funkcji persist w bloku try.