Android XR to rozszerzenie platformy i ekosystemu Androida. Pakiet SDK Androida XR umożliwia tworzenie aplikacji XR za pomocą znanych platform i narzędzi Androida lub standardów open source, takich jak OpenXR i WebXR. Wszystkie zgodne aplikacje na urządzenia mobilne lub duże ekrany będą dostępne do zainstalowania na zestawach XR ze Sklepu Play. Zapoznaj się z uwagami na temat zgodności, aby sprawdzić, czy Twoja aplikacja jest zgodna.
W tym przewodniku omawiamy te kwestie:
- Wybieranie narzędzi i technologii programistycznych
- Projektowanie aplikacji na Androida XR
- Konfigurowanie pliku manifestu aplikacji
- Informacje o zgodności pliku manifestu aplikacji
- Informacje o uprawnieniach w Androidzie XR
- Jakość aplikacji na Androida XR
- Pakowanie i rozpowszechnianie aplikacji na Androida XR
Wybierz narzędzia i technologie programistyczne
Podczas tworzenia aplikacji na Androida XR możesz skorzystać z tych platform i technologii programistycznych:
Pakiet SDK Jetpack XR
Pakiet Jetpack XR SDK zawiera biblioteki Jetpacka na Androida XR, które umożliwiają korzystanie z wyjątkowych możliwości urządzeń XR. Użyj tego pakietu SDK, jeśli chcesz wykonać jedną z tych czynności:
- Optymalizowanie lub ulepszanie istniejącej aplikacji na telefon lub tablet z Androidem
- Tworzenie nowej aplikacji na Androida XR za pomocą Android Studio i Jetpacka
Jeśli czujesz się już pewnie, tworząc aplikacje za pomocą Jetpacka na Androida, Jetpack XR SDK będzie dla Ciebie odpowiednim wyborem. Jest ona zaprojektowana tak, aby płynnie integrować się z tymi frameworkami i bibliotekami, a także umożliwia wykorzystanie istniejącej wiedzy do tworzenia wciągających doświadczeń XR.
Więcej informacji o programowaniu z użyciem pakietu Jetpack XR SDK
Unity
Unity Engine to silnik do tworzenia gier 3D w czasie rzeczywistym, który umożliwia współpracę między artystami, projektantami i programistami w celu tworzenia wciągających i interakcyjnych treści. Obsługa XR na Androida w Unity zapewnia wysoki poziom kontroli nad tworzonymi przez Ciebie wrażeniami 3D, a zarazem korzystanie z dobrze rozwiniętego wsparcia OpenXR i ekosystemu deweloperów Unity.
Jeśli masz już treści XR utworzone w Unity lub znasz się na programowaniu w Unity, zacznij od tej opcji.
Więcej informacji o programowaniu w Unity na Androida XR
OpenXR
OpenXR to otwarty standard bez tantiem, który można wykorzystać do tworzenia wydajnych, wieloplatformowych środowisk XR. Android XR obsługuje specyfikacje OpenXR 1.0 i 1.1, a my rozszerzamy ją o nowe rozszerzenia na potrzeby Androida XR. Android XR jest oparty na otwartych standardach, dlatego narzędzia do tworzenia aplikacji, które obsługują OpenXR i Androida, powinny być zgodne z Androidem XR.
Więcej informacji o obsługiwaniu OpenXR na Androidzie XR
WebXR
WebXR umożliwia tworzenie wciągających wrażeń w internecie. Zapewnia dostęp do urządzeń VR i AR w kompatybilnych przeglądarkach, takich jak Chrome na Androidzie XR.
Zacznij od tej opcji, jeśli chcesz tworzyć treści XR na potrzeby internetu lub dodawać funkcje XR do aplikacji internetowej. Dotychczasowe treści WebXR będą też działać na Androidzie XR.
Więcej informacji o tworzeniu aplikacji internetowych za pomocą WebXR
Projektowanie z myślą o XR
Technologia XR rozszerza możliwości projektowania poza tradycyjne płaskie ekrany. Możesz tworzyć wciągające doświadczenia, które łączą rzeczywistość fizyczną z wirtualną. Niezależnie od tego, czy tworzysz zupełnie nowe środowisko, czy dodajesz elementy skoncentrowane na użytkowniku do istniejącej aplikacji, ten przewodnik po projektowaniu na potrzeby Androida XR pomoże Ci zacząć.
Konfigurowanie pliku manifestu aplikacji
Podobnie jak w przypadku innych projektów aplikacji na Androida, aplikacja na Androida XR musi zawierać plik AndroidManifest.xml z określonymi ustawieniami. Plik manifestu zawiera najważniejsze informacje o aplikacji, które są potrzebne narzędziom do kompilacji Androida, systemowi operacyjnemu Android i Google Play. Więcej informacji znajdziesz w przewodniku na temat pliku manifestu aplikacji.
W przypadku aplikacji z różnymi wersjami na urządzenia XR plik manifestu musi zawierać te elementy i atrybuty:
Właściwość PROPERTY_ACTIVITY_XR_START_MODE
Właściwość android:name="android.window.PROPERTY_ACTIVITY_XR_START_MODE"
informuje system, że aktywność powinna być uruchamiana w określonym trybie po jej rozpoczęciu.
Właściwość ta może mieć 3 możliwe wartości:
XR_ACTIVITY_START_MODE_HOME_SPACE
(dotyczy tylko pakietu SDK Jetpack XR)XR_ACTIVITY_START_MODE_FULL_SPACE_MANAGED
(dotyczy tylko pakietu SDK Jetpack XR)XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED
(tylko OpenXR)
XR_ACTIVITY_START_MODE_HOME_SPACE
(dotyczy tylko aplikacji utworzonych za pomocą pakietu Jetpack XR SDK)
Użyj tego trybu uruchamiania, aby uruchomić aplikację w obszarze Home Space. W obszarze Home można uruchamiać wiele aplikacji obok siebie, co pozwala użytkownikom na wykonywanie wielu zadań jednocześnie. W domu można używać dowolnej aplikacji na Androida na telefony i duże ekrany, a także aplikacji XR utworzonych za pomocą pakietu Jetpack XR SDK.
<manifest ... >
<application ... >
<property
android:name="android.window.PROPERTY_XR_ACTIVITY_START_MODE"
android:value="XR_ACTIVITY_START_MODE_HOME_SPACE" />
<activity
android:name="com.example.myapp.MainActivity" ... >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
XR_ACTIVITY_START_MODE_FULL_SPACE_MANAGED
(dotyczy tylko aplikacji utworzonych za pomocą pakietu Jetpack XR SDK)
Użyj tego trybu uruchamiania, aby uruchomić aplikację w trybie pełnego ekranu. W trybie pełnego obrazu działa tylko jedna aplikacja, bez żadnych ograniczeń, a wszystkie inne aplikacje są ukryte.
<manifest ... >
<application ... >
<property
android:name="android.window.PROPERTY_XR_ACTIVITY_START_MODE"
android:value="XR_ACTIVITY_START_MODE_FULL_SPACE_MANAGED" />
<activity
android:name="com.example.myapp.MainActivity" ... >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED
(dotyczy tylko aplikacji utworzonych za pomocą OpenXR)
Aplikacje utworzone za pomocą OpenXR uruchamiają się w trybie pełnego obrazu i muszą używać trybu uruchamianiaXR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED
. Niezarządzane pełne pole sygnalizuje Androidowi XR, że aplikacja korzysta z OpenXR.
<manifest ... >
<application ... >
<property
android:name="android.window.PROPERTY_XR_ACTIVITY_START_MODE"
android:value="XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED" />
<activity
android:name="com.example.myapp.MainActivity" ... >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Funkcje PackageManagera dla aplikacji XR
Podczas rozpowszechniania aplikacji w Sklepie Google Play możesz określić wymagane funkcje sprzętowe lub programowe w manifeście aplikacji. Element
uses-feature
pozwala Sklepowi Play odpowiednio filtrować aplikacje wyświetlane użytkownikom.
Poniższe funkcje są dostępne tylko w przypadku aplikacji XR.
android.software.xr.immersive
Jeśli Twoja aplikacja jest kierowana na platformę Android XR i działa tylko na platformach obsługujących XR, ustaw wartość na „true”. Jeśli Twoja aplikacja zawiera funkcje zoptymalizowane pod kątem rzeczywistości rozszerzonej, ale może też działać na urządzeniach bez tej funkcji, ustaw wartość na „false” (fałsz).
Aplikacje utworzone za pomocą OpenXR lub Unity muszą mieć tę wartość ustawioną na prawdę.
<uses-feature android:name="android.software.xr.immersive" android:required="true" />
android.hardware.xr.input.controller
Ta funkcja wskazuje, że aplikacja do prawidłowego działania wymaga sterowania za pomocą precyzyjnego kontrolera ruchu 6DoF (stopni swobody). Jeśli Twoja aplikacja obsługuje kontrolery i nie może działać bez nich, ustaw wartość na „true” (prawda). Jeśli Twoja aplikacja obsługuje kontrolery, ale może działać bez nich, ustaw tę wartość na „false” (fałsz).
<uses-feature android:name="android.hardware.xr.input.controller" android:required="true" />
android.hardware.xr.input.hand_tracking
Ta flaga wskazuje, że aplikacja wymaga do prawidłowego działania śledzenia dłoni o wysokiej wierności, w tym pozycji, orientacji i prędkości stawów w ręce użytkownika. Jeśli Twoja aplikacja obsługuje śledzenie dłoni i nie może działać bez niego, ustaw wartość na „true”. Jeśli Twoja aplikacja obsługuje śledzenie dłoni, ale może działać bez niego, ustaw tę opcję na „false” (fałsz).
<uses-feature android:name="android.hardware.xr.input.hand_tracking" android:required="true" />
android.hardware.xr.input.eye_tracking
Ten parametr wskazuje, że aplikacja wymaga do prawidłowego działania śledzenia ruchów oczu o wysokiej precyzji. Jeśli Twoja aplikacja obsługuje śledzenie ruchów gałek ocznych i nie może działać bez niego, ustaw wartość na „Prawda”. Jeśli Twoja aplikacja obsługuje śledzenie wzroku, ale może działać bez niego, ustaw tę opcję na „false” (fałsz).
<uses-feature android:name="android.hardware.xr.input.eye_tracking" android:required="true" />
Informacje o zgodności pliku manifestu aplikacji na urządzenia mobilne i z dużym ekranem
Jak opisano w sekcji Funkcje PackageManagera dla aplikacji XR, aplikacje deklarują, że korzystają z funkcji, deklarując ją w elementach <uses-feature>
w manifeście aplikacji. Niektóre funkcje, takie jak telefonia czy GPS, mogą nie być zgodne ze wszystkimi urządzeniami.
Nieobsługiwane funkcje
Sklep Google Play filtruje aplikacje dostępne do zainstalowania na urządzeniu, korzystając z tych deklaracji funkcji Androida.
Sprzęt do kamer
android.hardware.camera.autofocus
android.hardware.camera.capability.manual_post_processing
android.hardware.camera.capability.manual_sensor
android.hardware.camera.capability.raw
android.hardware.camera.concurrent
android.hardware.camera.external
android.hardware.camera.level.full
Łączność
android.hardware.ipsec_tunnel_migration
Konfiguracja urządzenia
Konfiguracja formatu
android.hardware.type.automotive
android.hardware.type.embedded
android.hardware.type.television
android.software.leanback_only
Urządzenie wejściowe
android.software.input_methods
Lokalizacja
Near Field Communication
Konfiguracja zabezpieczeń i sprzęt
android.hardware.se.omapi.uicc
android.hardware.biometrics.face
android.hardware.identity_credential
android.hardware.identity_credential_direct_access
android.hardware.keystore.limited_use_key
android.hardware.keystore.single_use_key
android.hardware.strongbox_keystore
Czujniki
android.hardware.sensor.accelerometer_limited_axes
android.hardware.sensor.accelerometer_limited_axes_uncalibrated
android.hardware.sensor.ambient_temperature
android.hardware.sensor.barometer
android.hardware.sensor.gyroscope_limited_axes
android.hardware.sensor.gyroscope_limited_axes_uncalibrated
android.hardware.sensor.heading
android.hardware.sensor.heartrate
android.hardware.sensor.heartrate.ecg
android.hardware.sensor.hinge_angle
android.hardware.sensor.relative_humidity
android.hardware.sensor.stepcounter
android.hardware.sensor.stepdetector
Konfiguracja oprogramowania
android.software.connectionservice
android.software.expanded_picture_in_picture
android.software.live_wallpaper
android.software.picture_in_picture
android.software.wallet_location_based_suggestions
Połączenia telefoniczne
android.hardware.telephony.calling
android.hardware.telephony.cdma
android.hardware.telephony.data
android.hardware.telephony.euicc
android.hardware.telephony.euicc.mep
android.hardware.telephony.gsm
android.hardware.telephony.ims
android.hardware.telephony.mbms
android.hardware.telephony.messaging
android.hardware.telephony.radio.access
android.hardware.telephony.subscription
Rzeczywistość wirtualna (starsza wersja)
android.hardware.vr.headtracking
android.hardware.vr.high_performance
Widżety
Informacje o uprawnieniach w XR
Podobnie jak w przypadku aplikacji na urządzenia mobilne i inne formaty, niektóre funkcje oferowane przez aplikacje XR mogą wymagać deklaracji uprawnień w pliku AndroidManifest aplikacji. W przypadku uprawnień niebezpiecznych aplikacja może prosić o uprawnienia w czasie działania. Więcej informacji znajdziesz w artykule Uprawnienia na Androidzie i sprawdzonych metodach dotyczących uprawnień.
Uprawnienia do funkcji XR
Aplikacje XR mogą używać tych uprawnień. Wszystkie uprawnienia opisane w tej sekcji są uważane za niebezpieczne, dlatego musisz je zadeklarować w pliku manifestu aplikacji iwymagać ich w czasie działania.
android.permission.EYE_TRACKING
Przypadki użycia wymagające tego uprawnienia
Reprezentowanie pozycji i orientacji oczu użytkownika na potrzeby awatarów.
Funkcje pakietu SDK Jetpack XR, które wymagają tego uprawnienia
nie dotyczy
Rozszerzenia OpenXR wymagające tego uprawnienia
XR_ANDROID_avatar_eyes
(wycofano)XR_ANDROID_eye_tracking
(do śledzenia ogólnego)Funkcje Unity, które wymagają tego uprawnienia
android.permission.EYE_TRACKING_COARSE
Przypadki użycia wymagające tego uprawnienia
Reprezentowanie pozycji, stanu i orientacji oczu użytkownika, np. w przypadku awatara. Używaj tego uprawnienia, gdy potrzebne są dane śledzenia wzroku o niskiej precyzji.
Funkcje pakietu SDK Jetpack XR, które wymagają tego uprawnienia
nie dotyczy
Rozszerzenia OpenXR wymagające tego uprawnienia
XR_ANDROID_avatar_eyes
(wycofano)XR_ANDROID_eye_tracking
(do śledzenia ogólnego)Funkcje Unity, które wymagają tego uprawnienia
android.permission.EYE_TRACKING_FINE
Przypadki użycia wymagające tego uprawnienia
śledzenie wzroku do wybierania, wprowadzania i interakcji;
Funkcje pakietu SDK Jetpack XR, które wymagają tego uprawnienia
nie dotyczy
Rozszerzenia OpenXR wymagające tego uprawnienia
Funkcje Unity, które wymagają tego uprawnienia
android.permission.FACE_TRACKING
Przypadki użycia wymagające tego uprawnienia
Śledzenie i renderowanie wyrazów twarzy
Funkcje pakietu SDK Jetpack XR, które wymagają tego uprawnienia
nie dotyczy
Rozszerzenia OpenXR wymagające tego uprawnienia
Funkcje Unity, które wymagają tego uprawnienia
android.permission.HAND_TRACKING
Przypadki użycia wymagające tego uprawnienia
śledzenie pozycji stawów dłoni oraz prędkości kątowej i liniowej; korzystanie z reprezentowania dłoni użytkownika za pomocą siatki.
Funkcje pakietu SDK Jetpack XR, które wymagają tego uprawnienia
Rozszerzenia OpenXR wymagające tego uprawnienia
Funkcje Unity, które wymagają tego uprawnienia
android.permission.SCENE_UNDERSTANDING
Przypadki użycia wymagające tego uprawnienia
oszacowanie światła; rzutowanie przezroczystości na powierzchnie siatki; wykonywanie rzutów promieni na obiekty śledzenia w środowisku; śledzenie płaszczyzny; śledzenie obiektów; praca z głębią w celu testowania zasłonięcia i uderzenia; stałe punkty kotwiczenia.
Funkcje pakietu SDK Jetpack XR, które wymagają tego uprawnienia
Rozszerzenia OpenXR wymagające tego uprawnienia
Funkcje Unity, które wymagają tego uprawnienia
android.permission.SCENE_UNDERSTANDING_COARSE
Przypadki użycia wymagające tego uprawnienia
oszacowanie światła; rzutowanie na siatkę; wykonywanie rzutów promieniowych na elementy śledzenia w środowisku; śledzenie płaszczyzny; śledzenie obiektów; stałe punkty odniesienia.
Funkcje pakietu SDK Jetpack XR, które wymagają tego uprawnienia
Rozszerzenia OpenXR wymagające tego uprawnienia
Funkcje Unity, które wymagają tego uprawnienia
android.permission.SCENE_UNDERSTANDING_FINE
Przypadki użycia wymagające tego uprawnienia
Tekstura głębi
Funkcje pakietu SDK Jetpack XR, które wymagają tego uprawnienia
nie dotyczy
Rozszerzenia OpenXR wymagające tego uprawnienia
Funkcje Unity, które wymagają tego uprawnienia
Zapewnienie jakości aplikacji na Androida XR
Aby zapewnić użytkownikom wygodę korzystania z aplikacji, zapoznaj się z wskazówkami dotyczącymi jakości aplikacji na Androida XR.
Tworzenie pakietu i rozpowszechnianie aplikacji na Androida XR
Android XR umożliwia korzystanie z różnych aplikacji i funkcji na goglach XR za pomocą Google Play. W przewodniku dotyczącym pakowania i rozpowszechniania aplikacji na Androida XR znajdziesz informacje o tym, jak zacząć korzystać ze Sklepu Play i Konsoli Play, publikować ścieżki, przygotowywać pakiety aplikacji na Androida oraz ograniczać rozmiar aplikacji.