Android XR ist eine Erweiterung der Android-Plattform und des Android-Ökosystems. Mit dem Android XR SDK können Sie XR-Apps mit bekannten Android-Frameworks und ‑Tools oder mit offenen Standards wie OpenXR und WebXR erstellen. Alle kompatiblen Apps für Mobilgeräte oder große Bildschirme können über den Play Store auf XR-Headsets installiert werden. Sehen Sie sich die Kompatibilitätsanforderungen an, um festzustellen, ob Ihre App kompatibel ist.
In diesem Leitfaden werden die folgenden Bereiche erläutert:
- Entwicklungstools und ‑technologien auswählen
- Apps für Android XR entwerfen
- Manifestdatei Ihrer App konfigurieren
- Aspekte zur Kompatibilität von App-Manifesten
- Berechtigungen für Android XR
- Qualität von Android XR-Apps
- App-Paket für Android XR erstellen und bereitstellen
Entwicklungstools und ‑technologien auswählen
Wenn Sie eine App für Android XR entwickeln, können Sie aus den folgenden Entwicklungsplattformen und ‑technologien wählen:
Jetpack XR SDK
Das Jetpack XR SDK enthält Jetpack-Bibliotheken für Android XR, die speziell für die einzigartigen Funktionen von XR-Geräten entwickelt wurden. Verwenden Sie dieses SDK, wenn Sie Folgendes tun möchten:
- Vorhandene Android-App für Smartphones oder Tablets optimieren oder erweitern
- Neue Android XR-App mit Android Studio und Jetpack erstellen
Wenn Sie bereits mit Android Jetpack vertraut sind, ist das Jetpack XR SDK die richtige Wahl für Sie. Es ist für die nahtlose Integration in diese Frameworks und Bibliotheken konzipiert und ermöglicht es Ihnen, vorhandenes Wissen für die Entwicklung immersiver XR-Inhalte zu nutzen.
Weitere Informationen zur Entwicklung mit dem Jetpack XR SDK
Unity
Die Unity Engine ist eine Echtzeit-3D-Entwicklungs-Engine, mit der Künstler, Designer und Entwickler gemeinsam immersive und interaktive Inhalte erstellen können. Mit der Android XR-Unterstützung von Unity haben Sie eine hohe Kontrolle über die von Ihnen entwickelten 3D-Inhalte und profitieren gleichzeitig von der etablierten OpenXR-Unterstützung und dem Entwickler-Ökosystem von Unity.
Wenn Sie bereits eine XR-Anwendung mit Unity erstellt haben oder mit der Unity-Entwicklung vertraut sind, beginnen Sie mit dieser Option.
Weitere Informationen zur Entwicklung mit Unity für Android XR
OpenXR
OpenXR ist ein gebührenfreier, offener Standard, der für die Entwicklung leistungsstarker, plattformübergreifender XR-Anwendungen verwendet werden kann. Android XR unterstützt OpenXR 1.0 und 1.1. Wir erweitern die Spezifikation um neue Erweiterungen für Android XR. Da Android XR auf offenen Standards basiert, sollten Entwicklungstools, die OpenXR und Android unterstützen, mit Android XR kompatibel sein.
Weitere Informationen zur OpenXR-Unterstützung für Android XR
WebXR
Mit WebXR können Sie immersive Inhalte für das Web erstellen. Sie bietet Zugriff auf VR- und AR-Geräte in kompatiblen Webbrowsern wie Chrome auf Android XR.
Diese Option eignet sich, wenn Sie eine XR-Anwendung für das Web erstellen oder einer Web-App XR-Funktionen hinzufügen möchten. Vorhandene WebXR-Anwendungen funktionieren auch auf Android XR.
Weitere Informationen zum Erstellen von Webanwendungen mit WebXR
Design für XR
Mit XR wird die Designoberfläche über traditionelle Flachbildschirme hinaus erweitert. Sie können immersive Erlebnisse entwerfen, bei denen physische und virtuelle Realität verschmelzen. Egal, ob Sie eine ganz neue App entwickeln oder einer bestehenden App immersive Elemente hinzufügen möchten – der Leitfaden zum Entwerfen für Android XR kann Ihnen den Einstieg erleichtern.
Manifestdatei Ihrer App konfigurieren
Wie bei anderen Android-App-Projekten muss Ihre Android XR-App eine Datei „AndroidManifest.xml“ mit bestimmten Manifesteinstellungen haben. Die Manifestdatei enthält wichtige Informationen zu Ihrer App für die Android-Buildtools, das Android-Betriebssystem und Google Play. Weitere Informationen finden Sie im Leitfaden zum App-Manifest.
Für XR-differenzierte Apps muss Ihre Manifestdatei die folgenden Elemente und Attribute enthalten:
Attribut „PROPERTY_ACTIVITY_XR_START_MODE“
Mit der Eigenschaft android:name="android.window.PROPERTY_ACTIVITY_XR_START_MODE"
wird dem System mitgeteilt, dass eine Aktivität in einem bestimmten Modus gestartet werden soll.
Für dieses Attribut sind drei Werte möglich:
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_FULL_SPACE_UNMANAGED
(nur OpenXR)
XR_ACTIVITY_START_MODE_HOME_SPACE
(Nur für Apps, die mit dem Jetpack XR SDK erstellt wurden)
Verwenden Sie diesen Startmodus, um Ihre App im Home-Bereich zu starten. Im Home Space können mehrere Apps nebeneinander ausgeführt werden, sodass Nutzer mehrere Aufgaben gleichzeitig erledigen können. Im Home Space können alle Android-Apps für Smartphones oder Tablets sowie XR-Apps verwendet werden, 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
(Nur für Apps, die mit dem Jetpack XR SDK erstellt wurden)
Mit diesem Startmodus können Sie Ihre App im Vollbildmodus starten. Im Vollbildschirmmodus wird jeweils nur eine App ausgeführt, ohne Bereichsgrenzen. Alle anderen Apps werden 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>
XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED
(Nur für mit OpenXR erstellte Apps)
Mit OpenXR erstellte Apps werden im Vollbildmodus gestartet und müssen den Startmodus XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED
verwenden. „Unmanaged Full Space“ signalisiert Android XR, dass die App OpenXR verwendet.
<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>
<uses-native-library> OpenXR
(Nur für mit OpenXR erstellte Apps)
OpenXR-Anwendungen müssen die Verwendung der nativen OpenXR-Bibliothek deklarieren, damit die Laufzeit erfolgreich geladen werden kann. Ohne diese Deklaration kann die Laufzeit nicht geladen werden.
<manifest ... >
<application ... >
<uses-native-library android:name="libopenxr.google.so" android:required="true" />
<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>
PackageManager-Funktionen für XR-Apps
Wenn Sie Apps über den Google Play Store anbieten, können Sie im App-Manifest erforderliche Hardware- oder Softwarefunktionen angeben. Mit dem Element uses-feature
kann der Play Store die angezeigten Apps entsprechend filtern.
Die folgenden Funktionen sind spezifisch für XR-differenzierte 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, sollten Sie das Attribut android:required
auf false
festlegen. Wenn Ihre App speziell für XR-fähige Geräte entwickelt wurde und im speziellen Release-Track für Android XR veröffentlicht wird, sollten Sie das Attribut android:required
auf true
festlegen.
<uses-feature android:name="android.software.xr.api.spatial" android:required="true" />
android.software.xr.api.openxr
Apps, die auf die Android XR-Plattform ausgerichtet und mit OpenXR oder Unity erstellt wurden, müssen diese Funktion im App-Manifest mit dem Attribut android:required
= true
enthalten.
Bei Apps, die das Android XR-Erweiterungspaket für Unity Version 1.0.0 oder höher oder das Unity OpenXR: Android XR-Paket Version 0.5.0-exp.1 oder höher verwenden, muss dieses Element dem App-Manifest nicht manuell hinzugefügt werden. Diese beiden Pakete fügen dieses Element für Sie in das App-Manifest ein.
Geräte können eine Version für diese Funktion angeben, die die höchste Version von OpenXR angibt, die vom Gerät unterstützt wird. Die oberen 16 Bit stellen die Major-Nummer dar und die unteren 16 Bit die Minor-Nummer. Wenn Sie beispielsweise OpenXR-Version 1.1 angeben möchten, wird der Wert auf „0x00010001“ festgelegt.
Mit der Funktionsversion können Apps eine Mindestversion von OpenXR angeben, die für die App erforderlich ist. Wenn Ihre App beispielsweise OpenXR Version 1.1 erfordert, deklarieren Sie die folgende Funktion:
<uses-feature android:name="android.software.xr.api.openxr"
android:version="0x00010001"
android:required="true" />
android.hardware.xr.input.controller
Diese Funktion gibt an, dass die App für die korrekte Funktion eine Eingabe von einem hochpräzisen Bewegungscontroller mit 6 Freiheitsgraden benötigt. Wenn Ihre App Controller unterstützt und ohne sie nicht funktioniert, setzen Sie den Wert auf „wahr“. Wenn Ihre App Controller unterstützt, aber auch ohne sie funktioniert, setzen Sie den Wert auf „false“.
<uses-feature android:name="android.hardware.xr.input.controller" android:required="true" />
android.hardware.xr.input.hand_tracking
Diese Flagge gibt an, dass für die ordnungsgemäße Funktion der App eine präzise Handerkennung erforderlich ist, einschließlich Position, Ausrichtung und Geschwindigkeit der Gelenke in der Hand des Nutzers. Wenn Ihre App die Handerkennung unterstützt und ohne sie nicht funktioniert, setzen Sie den Wert auf „wahr“. Wenn Ihre App die Handerkennung unterstützt, aber auch ohne sie funktioniert, setzen Sie den Wert auf „false“.
<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 korrekte Funktion der Eingabe ein hochauflösendes Augen-Tracking erfordert. Wenn Ihre App Eye-Tracking für die Eingabe unterstützt und ohne diese Funktion nicht funktioniert, setzen Sie den Wert auf „wahr“. Wenn Ihre App Eye-Tracking für die Eingabe unterstützt, aber auch ohne funktioniert, setzen Sie den Wert auf „false“.
<uses-feature android:name="android.hardware.xr.input.eye_tracking" android:required="true" />
App-Manifest-Kompatibilität für Apps mit kleinem und großem Bildschirm
Wie im Abschnitt PackageManager-Funktionen für XR-Apps beschrieben, geben Apps an, 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.
Nicht unterstützte Funktionen
Im Google Play Store werden Apps gefiltert, die auf einem Gerät installiert werden können. Dazu werden die folgenden Android-Funktionserklärungen verwendet.
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
Konfiguration des Formfaktors
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
Berechtigungen für XR
Ähnlich wie bei Apps auf Mobilgeräten und anderen Formfaktoren müssen Sie für einige Funktionen von XR-Apps möglicherweise Berechtigungen in der AndroidManifest-Datei Ihrer App deklarieren. Bei gefährlichen Berechtigungen muss Ihre App möglicherweise Laufzeitberechtigungen anfordern. Weitere Informationen finden Sie unter Berechtigungen unter Android und Best Practices für Berechtigungen.
Die folgenden Berechtigungen können von XR-Apps verwendet werden. Alle Berechtigungen in diesem Abschnitt gelten als gefährlich. Sie müssen sie daher in Ihrem App-Manifest deklarieren und zur Laufzeit anfordern.
android.permission.EYE_TRACKING_COARSE
Darstellung der Augenposition, des Status und der Ausrichtung des Nutzers, z. B. für Avatare. Verwenden Sie diese Berechtigung, wenn nur Daten mit geringer Präzision erforderlich sind.
Jetpack XR SDK
–
OpenXR-Erweiterungen
Unity-Funktionen
android.permission.EYE_TRACKING_FINE
Der Blick wird für die Auswahl, Eingabe und Interaktionen verwendet.
Jetpack XR SDK
–
OpenXR-Erweiterungen
Unity-Funktionen
android.permission.FACE_TRACKING
Gesichtsausdrücke erfassen und rendern
Jetpack XR SDK
–
OpenXR-Erweiterungen
Unity-Funktionen
android.permission.HAND_TRACKING
Tracking von Handgelenkspositionen und Winkel- und Lineargeschwindigkeiten; Verwendung einer Mesh-Darstellung der Hände des Nutzers
Jetpack XR SDK
OpenXR-Erweiterungen
Unity-Funktionen
android.permission.SCENE_UNDERSTANDING_COARSE
Lichtschätzung; Projektion von „Durchsichtig“ auf Mesh-Oberflächen; Durchführung von Raycasts auf Trackables in der Umgebung; Ebenen-Tracking; Objekt-Tracking; persistente Anker.
Jetpack XR SDK
OpenXR-Erweiterungen
Unity-Funktionen
android.permission.SCENE_UNDERSTANDING_FINE
Tiefentextur.
Jetpack XR SDK
–
OpenXR-Erweiterungen
Unity-Funktionen
Qualität von Android XR-Apps
Lesen Sie unsere Qualitätsrichtlinien für Android XR-Apps, damit Ihre App eine hervorragende Nutzererfahrung bietet.
App für Android XR verpacken und bereitstellen
Android XR bietet über Google Play eine Vielzahl von Apps und Funktionen für XR-Headsets. Im Leitfaden zum Verpacken und Verteilen von Apps für Android XR finden Sie Informationen zum Einstieg in den Play Store und die Play Console, zu Veröffentlichungstracks, zur Vorbereitung von Android App-Bundles und zu Einschränkungen bei der App-Größe.