Erste Schritte beim Erstellen immersiver Erlebnisse

Anwendbare XR‑Geräte
Dieser Leitfaden hilft Ihnen dabei, Erlebnisse für diese Arten von XR-Geräten zu entwickeln.
XR-Headsets
XR-Datenbrille mit Kabel

Nachdem Sie Android Studio installiert und konfiguriert, ein Projekt erstellt und das Jetpack XR SDK eingerichtet haben, können Sie mit der Entwicklung immersiver Erlebnisse beginnen.

Bevor Sie alle Möglichkeiten zum Entwickeln erkunden, lesen Sie die Informationen und führen Sie alle Aufgaben in den folgenden Abschnitten aus, um sicherzustellen, dass Ihre App für die immersive XR-Entwicklung konfiguriert ist.

Manifestdatei Ihrer App konfigurieren

Wie bei anderen Android-App-Projekten muss Ihre Android XR-App eine AndroidManifest.xml-Datei mit bestimmten Manifesteinstellungen haben. Die Manifestdatei enthält wichtige Informationen zu Ihrer App für die Android-Build-Tools, das Android-Betriebssystem und Google Play. Weitere Informationen finden Sie im Leitfaden zur App-Manifestübersicht.

Bei XR-Apps mit Alleinstellungsmerkmalen muss die Manifestdatei die folgenden Elemente und Attribute enthalten:

PROPERTY_XR_ACTIVITY_START_MODE-Attribut

Mit der Eigenschaft android:name="android.window.PROPERTY_XR_ACTIVITY_START_MODE" wird dem System mitgeteilt, dass eine Aktivität in einem bestimmten Modus gestartet werden soll.

Diese Eigenschaft hat die folgenden Werte:

  • XR_ACTIVITY_START_MODE_HOME_SPACE (nur Jetpack XR SDK)
  • XR_ACTIVITY_START_MODE_FULL_SPACE_MANAGED (nur Jetpack XR SDK)

XR_ACTIVITY_START_MODE_HOME_SPACE

Mit diesem Startmodus können Sie Ihre App im Home Space starten. Im Home Space können mehrere Apps nebeneinander ausgeführt werden, sodass Nutzer Multitasking betreiben können. Alle Android-Apps für Mobilgeräte oder große Bildschirme können im Home Space ausgeführt werden, ebenso wie XR-Apps, die mit dem Jetpack XR SDK erstellt wurden.

<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

Mit diesem Startmodus wird Ihre App im Full Space gestartet. Im Vollbildmodus wird jeweils nur eine App ausgeführt. Es gibt keine Bereichsgrenzen und alle anderen Apps sind ausgeblendet.


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

Die android:name="android.window.PROPERTY_XR_BOUNDARY_TYPE_RECOMMENDED"-Property gibt an, dass die Anwendung mit einem bestimmten Typ von Begrenzung gestartet werden soll. In Ihrer App muss XR_BOUNDARY_TYPE_LARGE angegeben werden, wenn sie dafür konzipiert ist, dass Nutzer sich in ihrem physischen Raum bewegen. Wenn Sie XR_BOUNDARY_TYPE_NO_RECOMMENDATION angeben, werden keine Empfehlungen für den Typ der Sicherheitsgrenze bereitgestellt. Das System verwendet daher den Typ, der bereits verwendet wird.

<manifest ... >

   <application ... >
       <property
           android:name="android.window.PROPERTY_XR_BOUNDARY_TYPE_RECOMMENDED"
           android:value="XR_BOUNDARY_TYPE_LARGE" />
   </application>
</manifest>

PackageManager-Funktionen für XR-Apps

Wenn Sie Apps über den Google Play Store vertreiben, können Sie im App-Manifest erforderliche Hardware- oder Softwarefunktionen angeben. Mit dem Element uses-feature kann der Play Store die Apps, die Nutzern angezeigt werden, richtig filtern.

Die folgenden Funktionen sind spezifisch für XR-Apps.

android.software.xr.api.spatial

Apps, die mit dem Jetpack XR SDK erstellt wurden, müssen diese Funktion im App-Manifest enthalten. Der Wert, den Sie für das Attribut android:required festlegen, hängt vom Release-Track Ihrer App ab.

Wenn Ihre App XR-spezifische Funktionen oder Inhalte in einem vorhandenen mobilen APK bündelt und im mobilen Release-Track veröffentlicht wird, legen Sie das Attribut android:required auf false fest:

<!-- 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" />

Wenn Ihre App speziell für XR-fähige Geräte entwickelt und im speziellen Release-Track für Android XR veröffentlicht wird, legen Sie das Attribut android:required auf true fest:

<!-- 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

Diese Funktion weist darauf hin, dass die App Eingaben von einem hochpräzisen 6DoF-Bewegungscontroller (6 Freiheitsgrade) benötigt, um richtig zu funktionieren. Wenn Ihre App Controller unterstützt und ohne sie nicht funktioniert, legen Sie den Wert auf true fest. Wenn Ihre App Controller unterstützt, aber auch ohne sie funktioniert, legen Sie sie auf false fest.

<!-- 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

Diese Markierung gibt an, dass die App eine hochgenaue Handverfolgung benötigt, um richtig zu funktionieren. Dazu gehören die Position, Ausrichtung und Geschwindigkeit der Gelenke in der Hand des Nutzers. Wenn Ihre App die Hand-Tracking-Funktion unterstützt und ohne sie nicht funktioniert, legen Sie den Wert auf true fest. Wenn Ihre App Hand-Tracking unterstützt, aber auch ohne diese Funktion verwendet werden kann, legen Sie den Wert auf false fest.

<!-- 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

Dieses Flag gibt an, dass die App für die Eingabe ein hochpräzises Eye-Tracking benötigt, um richtig zu funktionieren. Wenn Ihre App die Blicksteuerung für die Eingabe unterstützt und ohne sie nicht funktioniert, legen Sie den Wert auf true fest. Wenn Ihre App Eye-Tracking für die Eingabe unterstützt, aber auch ohne diese Funktion verwendet werden kann, legen Sie den Wert auf false fest.

<!-- 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" />

App-Manifest-Kompatibilität für Apps für Mobilgeräte und große Displays

Wie im Abschnitt PackageManager-Funktionen für XR-Apps beschrieben, deklarieren Apps, dass sie eine Funktion verwenden, indem sie sie in einem <uses-feature>-Element im App-Manifest deklarieren. Einige Funktionen wie Telefonie oder GPS sind möglicherweise nicht mit allen Geräten kompatibel.

Führen Sie den Befehl adb shell pm list features aus, um eine Liste der für ein Gerät aktivierten Funktionen abzurufen.

Nicht unterstützte Funktionen

Der Google Play Store filtert Apps, die auf einem Gerät installiert werden können, anhand der folgenden Android-Funktionsdeklarationen.

Kamerahardware

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

Konnektivität

android.hardware.ethernet

android.hardware.uwb

android.hardware.ipsec_tunnel_migration

Gerätekonfiguration

android.hardware.ram.low

Formfaktorkonfiguration

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

Eingabe

android.hardware.consumerir

android.software.input_methods

Standort

android.hardware.location.gps

Nahfeldkommunikation

android.hardware.nfc

android.hardware.nfc.ese

android.hardware.nfc.hce

android.hardware.nfc.hcef

android.hardware.nfc.uicc

android.hardware.nfc.beam

Sicherheitskonfiguration und Hardware

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

Sensoren

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

Softwarekonfiguration

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

Telefonie

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

Virtual Reality (alt)

android.hardware.vr.headtracking

android.hardware.vr.high_performance

android.software.vr.mode

Widgets

android.software.app_widgets

Nächste Schritte

Nachdem Sie das Manifest Ihrer App konfiguriert und wichtige Informationen überprüft haben, können Sie sich ansehen, wie Sie immersive Erlebnisse schaffen können: