Entwicklung für Android XR – Übersicht

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

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

XR_ANDROID_avatar_eyes

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

XR_EXT_eye_gaze_interaction

Unity-Funktionen, für die diese Berechtigung erforderlich ist

Eye Gaze Interaction

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

XR_ANDROID_face_tracking

Unity-Funktionen, für die diese Berechtigung erforderlich ist

XRFaceTrackingFeature

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

XR_ANDROID_hand_mesh

XR_EXT_hand_tracking

Unity-Funktionen, für die diese Berechtigung erforderlich ist

XR Hands

XRHandMeshFeature

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

XR_ANDROID_anchor_persistence

XR_ANDROID_depth_texture

XR_ANDROID_light_estimation

XR_ANDROID_composition_layer_passthrough_mesh

XR_ANDROID_raycast

XR_ANDROID_trackables

XR_ANDROID_trackables_object

Unity-Funktionen, für die diese Berechtigung erforderlich ist

XRAnchorFeature

XRDepthTextureFeature

XRLightEstimationFeature

XRPassthroughFeature

XRTrackableFeature

XRObjectTrackingFeature

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.