Po zainstalowaniu i skonfigurowaniu Android Studio, utworzeniu projektu i skonfigurowaniu pakietu Jetpack XR SDK możesz zacząć tworzyć wciągające środowiska.
Zanim zaczniesz poznawać wszystkie sposoby tworzenia, zapoznaj się z informacjami w sekcjach poniżej i wykonaj wszystkie zadania, aby mieć pewność, że aplikacja jest skonfigurowana pod kątem tworzenia aplikacji wciągających w XR.
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 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 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 po uruchomieniu aktywności powinna ona zostać otwarta w określonym trybie.
Ta właściwość ma te wartości:
XR_ACTIVITY_START_MODE_HOME_SPACE(tylko pakiet SDK Jetpack XR)XR_ACTIVITY_START_MODE_FULL_SPACE_MANAGED(tylko pakiet SDK Jetpack XR)
XR_ACTIVITY_START_MODE_HOME_SPACE
Użyj tego trybu uruchamiania, aby uruchomić aplikację w przestrzeni bazowej. W przestrzeni domowej można uruchomić kilka aplikacji obok siebie, co umożliwia użytkownikom wykonywanie wielu zadań jednocześnie. W przestrzeni bazowej można używać dowolnej aplikacji na Androida na urządzenia mobilne lub z dużym ekranem, 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
Użyj tego trybu uruchamiania, aby otworzyć aplikację w pełnej przestrzeni. W przestrzeni pełnej tylko jedna aplikacja działa 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>
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ślać,XR_BOUNDARY_TYPE_LARGE czy jest przeznaczona do tego, aby użytkownicy mogli poruszać się w przestrzeni fizycznej. Określenie wartości XR_BOUNDARY_TYPE_NO_RECOMMENDATION nie powoduje wyświetlenia 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>
Funkcje Menedżera pakietów w przypadku aplikacji XR
Gdy dystrybuujesz 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 zróżnicowane pod względem XR w istniejącym mobilnym pliku APK 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 została opracowana specjalnie na urządzenia obsługujące XR i jest opublikowana na dedykowanej ścieżce wersji Androida XR, ustaw atrybut android:required na wartość 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.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 Twoja 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 wskazuje, ż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 niego, ustaw tę opcję 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 w przypadku aplikacji na urządzenia mobilne i urządzenia z dużym ekranem
Zgodnie z opisem 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.
Aby wyświetlić listę funkcji włączonych na urządzeniu, uruchom polecenie adb
shell pm list features.
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
Dalsze kroki
Po skonfigurowaniu pliku manifestu aplikacji i sprawdzeniu ważnych informacji możesz dowiedzieć się, jak tworzyć wciągające środowiska:
- Przekształcanie aplikacji na Androida w 3D za pomocą XR
- Tworzenie przestrzennego interfejsu za pomocą Jetpack Compose na urządzenia XR
- Wdrażanie Material Design w przestrzennym interfejsie
- Dodawanie środowisk przestrzennych do aplikacji
- Tworzenie, kontrolowanie i zarządzanie podmiotami