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>
PROPERTY_XR_BOUNDARY_TYPE_RECOMMENDED-Property
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.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
Konnektivität
android.hardware.ipsec_tunnel_migration
Gerätekonfiguration
Formfaktorkonfiguration
android.hardware.type.automotive
android.hardware.type.embedded
android.hardware.type.television
android.software.leanback_only
Eingabe
android.software.input_methods
Standort
Nahfeldkommunikation
Sicherheitskonfiguration und Hardware
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
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.relative_humidity
android.hardware.sensor.stepcounter
android.hardware.sensor.stepdetector
Softwarekonfiguration
android.software.connectionservice
android.software.expanded_picture_in_picture
android.software.live_wallpaper
android.software.picture_in_picture
android.software.wallet_location_based_suggestions
Telefonie
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
Virtual Reality (alt)
android.hardware.vr.headtracking
android.hardware.vr.high_performance
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:
- Android-Apps mit XR in 3D darstellen
- Räumliche Benutzeroberfläche mit Jetpack Compose für XR entwickeln
- Material Design für Ihre räumliche Benutzeroberfläche implementieren
- Räumliche Umgebungen in Ihre App einfügen
- Entitäten erstellen, steuern und verwalten