Pierwsze kroki w tworzeniu immersyjnych projektów

Odpowiednie urządzenia z XR
Te wskazówki pomogą Ci tworzyć treści na te typy urządzeń z XR.
Gogle XR
Przewodowe okulary XR

Po zainstalowaniu i skonfigurowaniu Android Studio, utworzeniu projektu i skonfigurowaniu pakietu Jetpack XR SDK możesz zacząć tworzyć immersyjne środowiska na urządzenia takie jak gogle XR i przewodowe okulary XR.

Zanim zaczniesz odkrywać wszystkie sposoby tworzenia, zapoznaj się z informacjami i wykonaj zadania opisane w poniższych sekcjach, aby upewnić się, że aplikacja jest skonfigurowana do tworzenia treści XR z wykorzystaniem funkcji Immersive View.

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 zróżnicowanych pod kątem 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 zostać uruchomiona 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, aby uruchomić aplikację w przestrzeni domowej. W przestrzeni domowej można uruchomić wiele aplikacji obok siebie, co pozwala użytkownikom na wykonywanie wielu zadań jednocześnie. W przestrzeni bazowej może działać dowolna aplikacja na Androida na urządzenia mobilne lub urządzenia z dużym ekranem, 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

Użyj tego trybu uruchamiania, aby uruchomić aplikację w pełnej przestrzeni. W trybie pełnej przestrzeni jednocześnie działa tylko jedna aplikacja, 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ść android:name="android.window.PROPERTY_XR_BOUNDARY_TYPE_RECOMMENDED" wskazuje, że aplikacja powinna zostać uruchomiona z określonym typem granicy. Jeśli aplikacja jest przeznaczona do tego, aby użytkownicy mogli poruszać się po przestrzeni fizycznej, musi określać XR_BOUNDARY_TYPE_LARGE. Jeśli określisz XR_BOUNDARY_TYPE_NO_RECOMMENDATION, nie otrzymasz rekomendacji dotyczących typu granicy bezpieczeństwa, więc system użyje 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 PackageManager w aplikacjach 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.

Te funkcje są dostępne tylko w aplikacjach XR.

android.software.xr.api.spatial

Aplikacje utworzone za pomocą pakietu SDK Jetpack XR muszą zawierać tę funkcję w manifeście aplikacji. Wartość ustawiona dla atrybutu android:required zależy od ścieżki wersji aplikacji.

Jeśli Twoja aplikacja zawiera funkcje lub treści przeznaczone na XR w istniejącym pakiecie 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 aplikacja została utworzona specjalnie na urządzenia z obsługą XR i jest opublikowana na ścieżce wersji przeznaczonej dla 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.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 wartość 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 wskazuje, że aplikacja wymaga do prawidłowego działania precyzyjnego śledzenia rąk, w tym pozycji, orientacji i prędkości stawów dłoni użytkownika. Jeśli aplikacja obsługuje śledzenie rąk i nie może działać bez tej funkcji, ustaw wartość true. Jeśli aplikacja obsługuje śledzenie rąk, ale może działać bez tej funkcji, ustaw wartość 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

Ta flaga wskazuje, że aplikacja wymaga precyzyjnego śledzenia wzroku, aby dane wejściowe działały prawidłowo. Jeśli aplikacja obsługuje śledzenie wzroku jako metodę wprowadzania danych i nie może działać bez tej funkcji, ustaw wartość true. Jeśli aplikacja obsługuje śledzenie wzroku jako metodę wprowadzania danych, ale może działać bez tej funkcji, ustaw wartość 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" />

android.hardware.xr.input.face_tracking

Ta flaga wskazuje, że aplikacja wymaga do prawidłowego działania sprzętu do śledzenia twarzy. Jeśli aplikacja obsługuje śledzenie twarzy i nie może działać bez tej funkcji, ustaw wartość na true. Jeśli aplikacja obsługuje śledzenie twarzy, ale może działać bez tej funkcji, ustaw wartość false.

<!-- Sets android:required to true, indicating that your app can't function on devices without face tracking. -->
<uses-feature android:name="android.hardware.xr.input.face_tracking" android:required="true" />

Uwagi dotyczące zgodności pliku manifestu aplikacji w przypadku aplikacji na urządzenia mobilne i urządzenia z dużym ekranem

Jak opisano w sekcji Funkcje PackageManager w aplikacjach XR, aplikacje deklarują, że używają danej funkcji, przez zadeklarowanie jej 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 uzyskać listę funkcji włączonych na urządzeniu, uruchom 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.ar

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.flash

android.hardware.camera.level.full

Połączenia

android.hardware.ethernet

android.hardware.uwb

android.hardware.ipsec_tunnel_migration

Konfiguracja urządzenia

android.hardware.ram.low

Konfiguracja formatu

android.hardware.type.automotive

android.hardware.type.embedded

android.hardware.type.pc

android.hardware.type.television

android.hardware.type.watch

android.software.leanback

android.software.leanback_only

android.software.live_tv

Dane wejściowe

android.hardware.consumerir

android.software.input_methods

Lokalizacja

android.hardware.location.gps

Near Field Communication

android.hardware.nfc

android.hardware.nfc.ese

android.hardware.nfc.hce

android.hardware.nfc.hcef

android.hardware.nfc.uicc

android.hardware.nfc.beam

Konfiguracja zabezpieczeń i sprzęt

android.hardware.se.omapi.ese

android.hardware.se.omapi.sd

android.hardware.se.omapi.uicc

android.hardware.biometrics.face

android.hardware.fingerprint

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.light

android.hardware.sensor.relative_humidity

android.hardware.sensor.stepcounter

android.hardware.sensor.stepdetector

Konfiguracja oprogramowania

android.software.backup

android.software.connectionservice

android.software.expanded_picture_in_picture

android.software.live_wallpaper

android.software.picture_in_picture

android.software.telecom

android.software.wallet_location_based_suggestions

Połączenia telefoniczne

android.hardware.telephony

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

android.software.sip

android.software.sip.voip

Rzeczywistość wirtualna (starsza wersja)

android.hardware.vr.headtracking

android.hardware.vr.high_performance

android.software.vr.mode

Widżety

android.software.app_widgets

Dalsze kroki

Po skonfigurowaniu pliku manifestu aplikacji i zapoznaniu się z ważnymi informacjami możesz poznać sposoby tworzenia atrakcyjnych treści: