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 z wykorzystaniem otwartych standardów, 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 znajdziesz informacje na te tematy:
- 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 unikatowych 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 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 potrzeby XR na Androida
OpenXR
OpenXR to otwarty standard bez tantiem, który można wykorzystać do tworzenia wydajnych, wieloplatformowych środowisk XR. Android XR obsługuje OpenXR 1.0 i 1.1, a my rozszerzamy specyfikację o nowe rozszerzenia na potrzeby Androida XR. Platforma Android XR jest oparta 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 środowisk XR na Androida 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 istotne 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.
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 Space 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 granic, 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 sygnały w pełnym zakresie przestrzeni na Androida XR – 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ę XR na Androida i działa tylko na platformach obsługujących XR, ustaw wartość na „true” (prawda). Jeśli aplikacja zawiera funkcje zoptymalizowane pod kątem XR, ale może też działać na urządzeniach innych niż XR, ustaw wartość na „false” (fałsz).
W przypadku aplikacji utworzonych za pomocą OpenXR lub Unity musi być ustawiona wartość „true”.
<uses-feature android:name="android.software.xr.immersive" android:required="true" />
android.hardware.xr.input.controller
Ta funkcja wskazuje, że aplikacja wymaga do prawidłowego działania sterowania ruchem o wysokiej precyzji i 6 stopniach 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 rozdzielczości. 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" />
Zagadnienia związane ze zgodnością pliku manifestu aplikacji na urządzenia mobilne i duże ekrany
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ć oświadczenia uprawnień w pliku AndroidManifest aplikacji. W przypadku niebezpiecznych uprawnień 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
przedstawianie oczu i ich orientacji na potrzeby awatara;
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 XR: AR Face
android.permission.EYE_TRACKING_FINE
Przypadki użycia wymagające tego uprawnienia
Interakcje i dane dotyczące śledzenia wzroku
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
nie dotyczy
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 elementy śledzenia w środowisku; śledzenie płaszczyzn; ś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
Śledzenie samolotu
Testowanie pozycji wskaźnika
Trwałość kotwicy
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 w goglach XR za pomocą Google Play. W przewodniku dotyczącym pakowania i rozpowszechniania aplikacji na Androida XR znajdziesz informacje o pierwszych krokach w Sklepie Play i Konsoli Play, publikowaniu ścieżek, przygotowywaniu pakietów aplikacji na Androida oraz ograniczeniach rozmiaru aplikacji.