Android XR ist eine Erweiterung der Android-Plattform und des Android-Ökosystems. Mit dem Android XR SDK können Sie XR-Apps mit vertrauten 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 für Android XR verpacken 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 Android XR-Jetpack-Bibliotheken, 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 verbessern
- 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-Umgebung für das Web erstellen oder einer Webanwendung XR-Funktionen hinzufügen möchten. Vorhandene WebXR-Umgebungen funktionieren auch mit 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 für das Design von Android XR-Apps kann Ihnen den Einstieg erleichtern.
Manifestdatei der 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 nur eine App gleichzeitig ausgeführt, ohne Begrenzungen des Displays. 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. Ein nicht verwalteter voller Bereich 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>
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-Apps.
android.software.xr.immersive
Wenn Ihre App auf die Android XR-Plattform ausgerichtet ist und nur auf Plattformen ausgeführt wird, die XR unterstützen, setzen Sie den Wert auf „wahr“. Wenn Ihre App einige für XR optimierte Funktionen hat, aber auch auf Nicht-XR-Geräten ausgeführt werden kann, setzen Sie den Wert auf „false“.
Bei Apps, die mit OpenXR oder Unity erstellt wurden, muss dieser Wert wahr sein.
<uses-feature android:name="android.software.xr.immersive" 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-Funktionsdeklarationen 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
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
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.
Berechtigungen für XR-Funktionen
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
Anwendungsfälle, für die diese Berechtigung erforderlich ist
Darstellung der Augenposition und -ausrichtung des Nutzers für Avatare
Jetpack XR SDK-Funktionen, für die diese Berechtigung erforderlich ist
–
OpenXR-Erweiterungen, für die diese Berechtigung erforderlich ist
Unity-Funktionen, für die diese Berechtigung erforderlich ist
Android XR: AR-Gesicht
android.permission.EYE_TRACKING_FINE
Anwendungsfälle, für die diese Berechtigung erforderlich ist
Blickerfassung und Interaktionen
Jetpack XR SDK-Funktionen, für die diese Berechtigung erforderlich ist
–
OpenXR-Erweiterungen, für die diese Berechtigung erforderlich ist
Unity-Funktionen, für die diese Berechtigung erforderlich ist
android.permission.FACE_TRACKING
Anwendungsfälle, für die diese Berechtigung erforderlich ist
Gesichtsausdrücke verfolgen und rendern
Jetpack XR SDK-Funktionen, für die diese Berechtigung erforderlich ist
–
OpenXR-Erweiterungen, für die diese Berechtigung erforderlich ist
Unity-Funktionen, für die diese Berechtigung erforderlich ist
android.permission.HAND_TRACKING
Anwendungsfälle, für die diese Berechtigung erforderlich ist
Tracking von Handgelenkspositionen und Winkel- und Lineargeschwindigkeiten; Verwendung einer Mesh-Darstellung der Hände des Nutzers
Jetpack XR SDK-Funktionen, für die diese Berechtigung erforderlich ist
–
OpenXR-Erweiterungen, für die diese Berechtigung erforderlich ist
Unity-Funktionen, für die diese Berechtigung erforderlich ist
android.permission.SCENE_UNDERSTANDING
Anwendungsfälle, für die diese Berechtigung erforderlich ist
Lichtschätzung; Projektion von „Durchsichtig“ auf Mesh-Oberflächen; Durchführung von Raycasts auf Trackables in der Umgebung; Ebenen-Tracking; Objekt-Tracking; Arbeit mit Tiefe für Okklusions- und Treffertests; persistente Anker.
Jetpack XR SDK-Funktionen, für die diese Berechtigung erforderlich ist
Flugreiseverfolgung
Trefferprüfung
Ankerpersistenz
OpenXR-Erweiterungen, für die diese Berechtigung erforderlich ist
Unity-Funktionen, für die diese Berechtigung erforderlich ist
Qualität von Android XR-Apps
Lesen Sie unsere Qualitätsrichtlinien für Android XR-Apps, um dafür zu sorgen, dass 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.