Bevor Sie mit der Entwicklung mit unterstützten OpenXR-Erweiterungen oder einer unterstützten Engine beginnen, sollten Sie die Informationen in den folgenden Abschnitten lesen und alle Aufgaben ausführen, damit 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_FULL_SPACE_UNMANAGED(nur OpenXR)
XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED
Apps, die mit OpenXR erstellt wurden, werden im Full Space 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>
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>
<uses-native-library> OpenXR
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="false" />
<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 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.openxr
Apps, die auf die Android XR-Plattform ausgerichtet sind und mit OpenXR oder Unity entwickelt wurden, müssen diese Funktion im App-Manifest mit dem Attribut android:required auf true festlegen.
Bei Apps, die das Android XR Extensions Package for Unity Version 1.0.0 oder höher oder das Unity OpenXR: Android XR Package Version 0.5.0-exp.1 oder höher verwenden, muss dieses Element nicht manuell zum App-Manifest 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 vom Gerät unterstützte OpenXR-Version angibt. Die oberen 16 Bits stehen für die Hauptnummer und die unteren 16 Bits für die Nebennummer. Wenn Sie beispielsweise OpenXR-Version 1.1 angeben möchten, legen Sie den Wert auf "0x00010001" fest.
Apps können die Funktionsversion verwenden, um eine Mindestversion von OpenXR anzugeben, die für die App erforderlich ist. Wenn Ihre App beispielsweise OpenXR-Version 1.1 unterstützt, deklarieren Sie das folgende Feature:
<uses-feature android:name="android.software.xr.api.openxr"
android:version="0x00010001"
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" />
Nächste Schritte
Nachdem Sie das Manifest Ihrer App konfiguriert und wichtige Informationen gelesen haben, können Sie sich ansehen, wie Sie OpenXR nutzen können: