Android XR to rozszerzenie platformy i ekosystemu Androida. Pakiet SDK Androida XR umożliwia tworzenie aplikacji XR przy użyciu znanych platform i narzędzi Androida lub otwartych standardów, takich jak OpenXR i WebXR. Wszystkie zgodne aplikacje mobilne i na duże ekrany będzie można zainstalować na goglach XR ze Sklepu Play. Zapoznaj się z informacjami o zgodności, aby sprawdzić, czy Twoja aplikacja jest zgodna z wymaganiami.
W tym przewodniku znajdziesz informacje na te tematy:
- Wybieranie narzędzi i technologii programistycznych
- Tworzenie aplikacji na Androida XR
- Konfigurowanie pliku manifestu aplikacji
- Kwestie związane ze zgodnością manifestu aplikacji
- Informacje o uprawnieniach w Androidzie XR
- Weryfikowanie jakości aplikacji na Androida XR
- Pakowanie i dystrybucja aplikacji na Androida XR
Wybierz narzędzia i technologie programistyczne
Podczas tworzenia aplikacji na Androida XR możesz wybierać spośród tych platform i technologii:
Jetpack XR SDK
Pakiet SDK Jetpack XR zawiera biblioteki Jetpack Androida XR, które zostały opracowane z myślą o wykorzystaniu unikalnych możliwości urządzeń XR. Zacznij od 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ą Androida Studio i Jetpacka
Jeśli znasz już Androida Jetpack, pakiet SDK Jetpack XR będzie dla Ciebie naturalnym wyborem. Został zaprojektowany tak, aby płynnie integrować się z tymi platformami i bibliotekami, oraz umożliwia wykorzystanie dotychczasowej wiedzy do tworzenia wciągających środowisk XR.
Więcej informacji o programowaniu z użyciem pakietu Jetpack XR SDK
Unity
Unity Engine to silnik do tworzenia trójwymiarowych treści w czasie rzeczywistym, który umożliwia artystom, projektantom i programistom współpracę przy tworzeniu interaktywnych treści. Obsługa Androida XR w Unity zapewnia wysoki poziom kontroli nad tworzonymi środowiskami 3D, a jednocześnie pozwala korzystać z ustalonej obsługi OpenXR i ekosystemu deweloperskiego Unity.
Jeśli masz już środowisko XR utworzone w Unity lub znasz to środowisko, zacznij od tej opcji.
Więcej informacji o tworzeniu aplikacji na Androida XR za pomocą Unity
OpenXR
OpenXR to bezpłatny, otwarty standard, którego można używać do tworzenia wydajnych, wieloplatformowych aplikacji XR. Android XR obsługuje OpenXR 1.0 i 1.1, a specyfikację rozszerzamy o nowe rozszerzenia dla Androida XR. Android XR jest oparty na otwartych standardach, więc narzędzia deweloperskie obsługujące OpenXR i Androida powinny być z nim zgodne.
Więcej informacji o obsłudze OpenXR na Androidzie XR
WebXR
WebXR umożliwia tworzenie wciągających interfejsów internetowych. Umożliwia 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 utworzyć rozwiązanie XR na potrzeby internetu lub dodać funkcje XR do aplikacji internetowej. Istniejące rozwiązania WebXR będą też działać na Androidzie XR.
Więcej informacji o tworzeniu aplikacji internetowych za pomocą WebXR
Projektowanie pod kątem XR
XR rozszerza obszar projektowania poza tradycyjne płaskie ekrany. Możesz projektować immersyjne interfejsy, które łączą rzeczywistość fizyczną i wirtualną. Niezależnie od tego, czy tworzysz zupełnie nowe środowisko, czy dodajesz elementy immersyjne do istniejącej aplikacji, przewodnik po projektowaniu na 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 mieć plik AndroidManifest.xml z określonymi ustawieniami pliku manifestu. Plik manifestu zawiera podstawowe informacje o aplikacji dla narzędzi do kompilacji Androida, systemu operacyjnego Android i Google Play. Więcej informacji znajdziesz w przewodniku po pliku manifestu aplikacji.
W przypadku aplikacji z różnicami w zakresie XR plik manifestu musi zawierać te elementy i atrybuty:
Właściwość PROPERTY_XR_ACTIVITY_START_MODE
Właściwość android:name="android.window.PROPERTY_XR_ACTIVITY_START_MODE"
informuje system, że aktywność powinna być uruchamiana w określonym trybie.
Ta właściwość może mieć 3 wartości:
XR_ACTIVITY_START_MODE_HOME_SPACE
(tylko pakiet Jetpack XR SDK)XR_ACTIVITY_START_MODE_FULL_SPACE_MANAGED
(tylko pakiet Jetpack XR SDK)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 przestrzeni domowej. W przestrzeni domowej można uruchamiać kilka aplikacji obok siebie, co umożliwia użytkownikom wykonywanie wielu zadań jednocześnie. W przestrzeni domowej mogą działać wszystkie aplikacje na Androida na urządzenia mobilne i duże ekrany, a także aplikacje XR utworzone 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 otworzyć aplikację w pełnej przestrzeni. W przestrzeni pełnej działa tylko jedna aplikacja naraz, bez ograniczeń przestrzennych, 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
(Tylko aplikacje utworzone za pomocą OpenXR)
Aplikacje utworzone za pomocą OpenXR uruchamiają się w trybie pełnej przestrzeni i muszą korzystać z trybu uruchamianiaXR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED
. Niezarządzana pełna przestrzeń
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>
Właściwość PROPERTY_XR_BOUNDARY_TYPE_RECOMMENDED
Właściwość android:name="android.window.PROPERTY_XR_BOUNDARY_TYPE_RECOMMENDED"
wskazuje, że aplikacja powinna zostać uruchomiona z określonym typem granicy. Aplikacja musi określić XR_BOUNDARY_TYPE_LARGE
, jeśli jest przeznaczona do tego, aby użytkownicy mogli poruszać się w przestrzeni fizycznej. Określenie
XR_BOUNDARY_TYPE_NO_RECOMMENDATION
nie zawiera rekomendacji dotyczących typu granicy bezpieczeństwa, więc system używa typu, który jest już używany.
<manifest ... >
<application ... >
<property
android:name="android.window.PROPERTY_XR_BOUNDARY_TYPE_RECOMMENDED"
android:value="XR_BOUNDARY_TYPE_LARGE" />
</application>
</manifest>
<uses-native-library> OpenXR
(Tylko aplikacje utworzone za pomocą OpenXR)
Aplikacje OpenXR muszą deklarować użycie natywnej biblioteki OpenXR, aby można było prawidłowo wczytać środowisko wykonawcze. Bez tej deklaracji środowisko wykonawcze nie zostanie wczytane.
<manifest ... >
<application ... >
<uses-native-library andro id:name="libopenxr.google.so" android:required="false" />
<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 w przypadku aplikacji XR
Gdy rozpowszechniasz aplikacje w Sklepie Google Play, możesz określić wymagane funkcje sprzętowe lub programowe w pliku manifestu aplikacji. Element
uses-feature
umożliwia Sklepowi Play odpowiednie filtrowanie aplikacji
wyświetlanych użytkownikom.
Poniższe funkcje są dostępne tylko w aplikacjach z rozszerzoną rzeczywistością.
android.software.xr.api.spatial
Aplikacje utworzone przy użyciu pakietu Jetpack XR SDK muszą zawierać tę funkcję w pliku manifestu aplikacji. Wartość ustawiona dla atrybutu android:required
zależy od ścieżki wersji aplikacji.
Jeśli Twoja aplikacja zawiera funkcje lub treści przeznaczone dla XR w istniejącym pliku APK na urządzenia mobilne i jest opublikowana na ścieżce wersji mobilnej, ustaw atrybut android:required
na false
:
<!-- If you are publishing an existing mobile APK using the mobile release track, set android:required to false.-->
<uses-feature android:name="android.software.xr.api.spatial" android:required="false" />
Jeśli Twoja aplikacja jest przeznaczona specjalnie na urządzenia obsługujące XR i jest opublikowana na ścieżce wersji Androida XR, ustaw atrybut android:required
na true
:
<!-- If you are publishing a separate APK for XR using the dedicated Android XR release track, set android:required to true.-->
<uses-feature android:name="android.software.xr.api.spatial" android:required="true" />
android.software.xr.api.openxr
Aplikacje kierowane na platformę Android XR i zbudowane za pomocą OpenXR lub Unity muszą zawierać tę funkcję w pliku manifestu aplikacji z atrybutem android:required
ustawionym na true
.
Aplikacje, które korzystają z pakietu rozszerzeń Android XR dla Unity w wersji 1.0.0 lub nowszej albo z pakietu Unity OpenXR: Android XR w wersji 0.5.0-exp.1 lub nowszej, nie muszą ręcznie dodawać tego elementu do manifestu aplikacji. Te 2 pakiety wstawią ten element do pliku manifestu aplikacji.
Urządzenia mogą określać wersję tej funkcji, która wskazuje najwyższą wersję OpenXR obsługiwaną przez urządzenie. Starsze 16 bitów reprezentuje numer główny, a młodsze 16 bitów – numer podrzędny. Na przykład, aby określić wersję OpenXR 1.1, wartość należy ustawić na "0x00010001"
.
Aplikacje mogą używać wersji funkcji, aby wskazać minimalną wersję OpenXR, której wymagają. Jeśli na przykład Twoja aplikacja wymaga obsługi OpenXR w wersji 1.1, zadeklaruj tę funkcję:
<uses-feature android:name="android.software.xr.api.openxr"
android:version="0x00010001"
android:required="true" />
android.hardware.xr.input.controller
Ta funkcja wskazuje, że aplikacja wymaga do prawidłowego działania danych wejściowych z kontrolera ruchu o wysokiej precyzji i 6 stopniach swobody. Jeśli aplikacja obsługuje kontrolery i nie może bez nich działać, ustaw wartość true
.
Jeśli aplikacja obsługuje kontrolery, ale może działać bez nich, ustaw ją na false
.
<!-- Sets android:required to true, indicating that your app can't function on devices without controllers. -->
<uses-feature android:name="android.hardware.xr.input.controller" android:required="true" />
android.hardware.xr.input.hand_tracking
Ta flaga oznacza, że aplikacja wymaga śledzenia dłoni z dużą dokładnością, aby działać prawidłowo, w tym określania pozycji, orientacji i prędkości stawów dłoni użytkownika. Jeśli aplikacja obsługuje śledzenie dłoni i nie może działać bez tej funkcji, ustaw wartość true
. Jeśli aplikacja obsługuje śledzenie dłoni, ale może działać bez tej funkcji, ustaw ją na false
.
<!-- Sets android:required to true, indicating that your app can't function on devices without hand tracking. -->
<uses-feature android:name="android.hardware.xr.input.hand_tracking" android:required="true" />
android.hardware.xr.input.eye_tracking
Ten tag oznacza, że aplikacja wymaga do prawidłowego działania śledzenia wzroku o wysokiej wierności. Jeśli aplikacja obsługuje śledzenie wzroku jako metodę wprowadzania danych i nie może bez niego działać, ustaw wartość true
. Jeśli aplikacja obsługuje śledzenie wzroku jako metodę wprowadzania danych, ale może działać bez tej funkcji, ustaw ją na false
.
<!-- Sets android:required to true, indicating that your app can't function on devices without eye tracking. -->
<uses-feature android:name="android.hardware.xr.input.eye_tracking" android:required="true" />
Kwestie związane ze zgodnością pliku manifestu aplikacji na urządzenia mobilne i urządzenia z dużym ekranem
nie będzie się wyświetlać w Sklepie Play na urządzeniach z Androidem XR.Jak opisano w sekcji Funkcje Menedżera pakietów dla aplikacji XR, aplikacje deklarują, że korzystają z danej funkcji, umieszczając ją w elemencie <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 aparatu
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 do XR
Podobnie jak w przypadku aplikacji na urządzeniach mobilnych i innych formatach, niektóre funkcje oferowane przez aplikacje XR mogą wymagać zadeklarowania uprawnień w pliku AndroidManifest aplikacji. W przypadku uprawnień niebezpiecznych aplikacja może poprosić o uprawnienia czasu działania. Więcej informacji znajdziesz w artykułach Uprawnienia na Androidzie i Sprawdzone metody dotyczące uprawnień.
Aplikacje XR mogą korzystać z tych uprawnień: Wszystkie uprawnienia w tej sekcji są uważane za niebezpieczne, więc musisz zadeklarować je w pliku manifestu aplikacji i poprosić o nie w czasie działania.
android.permission.EYE_TRACKING_COARSE
Reprezentowanie pozycji, stanu i orientacji oczu użytkownika, np. do wykorzystania w przypadku awatarów. Używaj tego uprawnienia, gdy potrzebne są dane śledzenia wzroku o niskiej precyzji.
Jetpack XR SDK
nie dotyczy
Rozszerzenia OpenXR
Funkcje Unity
android.permission.EYE_TRACKING_FINE
Sterowanie wzrokiem do wybierania, wprowadzania i interakcji.
Jetpack XR SDK
nie dotyczy
Rozszerzenia OpenXR
Funkcje Unity
android.permission.FACE_TRACKING
śledzenie i renderowanie wyrazów twarzy,
Jetpack XR SDK
nie dotyczy
Rozszerzenia OpenXR
Funkcje Unity
android.permission.HAND_TRACKING
śledzenie pozycji stawów dłoni oraz prędkości kątowych i liniowych; korzystanie z reprezentacji dłoni użytkownika w postaci siatki.
Jetpack XR SDK
Rozszerzenia OpenXR
Funkcje Unity
android.permission.SCENE_UNDERSTANDING_COARSE
szacowanie oświetlenia, rzutowanie obrazu z kamery na powierzchnie siatki, wykonywanie rzutowania promieniowego na śledzone obiekty w środowisku, śledzenie płaszczyzn, śledzenie obiektów, trwałe punkty zakotwiczenia.
Jetpack XR SDK
Rozszerzenia OpenXR
Funkcje Unity
android.permission.SCENE_UNDERSTANDING_FINE
Tekstura głębi.
Jetpack XR SDK
nie dotyczy
Rozszerzenia OpenXR
Funkcje Unity
Weryfikacja jakości aplikacji na Androida XR
Aby sprawdzić, czy Twoja aplikacja zapewnia użytkownikom wygodę, zapoznaj się z naszymi wskazówkami dotyczącymi jakości aplikacji na Androida XR.
Pakowanie i dystrybucja aplikacji na Androida XR
Android XR udostępnia w Google Play wiele różnych aplikacji i funkcji na gogle XR. W przewodniku dotyczącym pakowania i dystrybucji aplikacji na Androida XR znajdziesz informacje o tym, jak zacząć korzystać ze Sklepu Play i Konsoli Play, publikować ścieżki, przygotowywać pakiety Android App Bundle oraz jakie są ograniczenia dotyczące rozmiaru aplikacji.
OpenXR™ i logo OpenXR są znakami towarowymi należącymi do The Khronos Group Inc. i są zarejestrowane jako znaki towarowe w Chinach, Unii Europejskiej, Japonii i Wielkiej Brytanii.