開始使用支援的 OpenXR 擴充功能或引擎建構應用程式之前,請先查看下列各節的資訊並完成所有工作,確保應用程式已設定為沉浸式 XR 開發。
設定應用程式的資訊清單檔案
與其他 Android 應用程式專案一樣,Android XR 應用程式必須有 AndroidManifest.xml 檔案,並包含特定資訊清單設定。資訊清單檔案會將您應用程式的基本資訊提供給 Android 建構工具、Android 作業系統和 Google Play。詳情請參閱應用程式資訊清單總覽指南。
如果是XR 差異化應用程式,資訊清單檔案必須包含下列元素和屬性:
PROPERTY_XR_ACTIVITY_START_MODE 屬性
android:name="android.window.PROPERTY_XR_ACTIVITY_START_MODE" 屬性可讓系統瞭解活動啟動時應採用的模式。
這項屬性具有下列值:
XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED(僅限 OpenXR)
XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED
使用 OpenXR 建構的應用程式會在全螢幕模式下啟動,且必須使用 XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED 啟動模式。未受管理的完整空間
會向 Android XR 發出信號,表示應用程式使用 OpenXR。
<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 屬性
android:name="android.window.PROPERTY_XR_BOUNDARY_TYPE_RECOMMENDED" 屬性表示應用程式應以特定類型的邊界啟動。如果應用程式的設計目的是讓使用者在實體空間中移動,就必須指定 XR_BOUNDARY_TYPE_LARGE。指定 XR_BOUNDARY_TYPE_NO_RECOMMENDATION 不會提供安全界線類型建議,因此系統會使用已在使用的類型。
<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 應用程式必須宣告使用原生 OpenXR 程式庫,才能順利載入執行階段。如果沒有這項宣告,執行階段就無法載入。
<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>
適用於 XR 應用程式的 PackageManager 功能
透過 Google Play 商店發布應用程式時,您可以在應用程式資訊清單中指定必要的硬體或軟體功能。Play 商店會根據 uses-feature 元素,適當篩選向使用者顯示的應用程式。
下列功能是 XR 差異化應用程式專屬功能。
android.software.xr.api.openxr
以 OpenXR 或 Unity 建構的 Android XR 平台專用應用程式,必須在應用程式資訊清單中加入這項功能,並將 android:required 屬性設為 true。
如果應用程式使用 Android XR Extensions Package for Unity 1.0.0 以上版本或 Unity OpenXR: Android XR Package 0.5.0-exp.1 以上版本,則不必手動將這個元素新增至應用程式資訊清單。這兩個套件會為您將這個元素插入應用程式資訊清單。
裝置可能會指定這項功能適用的版本,指出裝置支援的最高 OpenXR 版本。較高的 16 位元代表主要編號,較低的 16 位元代表次要編號。舉例來說,如要指定 OpenXR 1.1 版,值會設為 "0x00010001"。
應用程式可使用功能版本,指出應用程式所需的 OpenXR 最低版本。舉例來說,如果應用程式需要支援 OpenXR 1.1 版,請宣告下列功能:
<uses-feature android:name="android.software.xr.api.openxr"
android:version="0x00010001"
android:required="true" />
android.hardware.xr.input.controller
這項功能表示應用程式需要高精確度的 6DoF (自由度) 動作控制器輸入,才能正常運作。如果應用程式支援控制器,且沒有控制器就無法運作,請將值設為 true。如果應用程式支援控制器,但沒有控制器也能運作,請將其設為 false。
<!-- 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
這個標記表示應用程式需要高精確度的手部追蹤功能才能正常運作,包括使用者手部關節的位置、方向和速度。如果應用程式支援手部追蹤,且必須使用這項功能才能運作,請將值設為 true。如果應用程式支援手部追蹤,但沒有這項功能也能運作,請將其設為 false。
<!-- 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
這個標記表示應用程式需要高精確度的眼動追蹤功能,才能正確接收輸入內容。如果應用程式支援眼球追蹤輸入功能,且無法在沒有這項功能的情況下運作,請將值設為 true。如果應用程式支援眼球追蹤輸入,但沒有這項功能也能運作,請將其設為 false。
<!-- 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" />
後續步驟
您已完成應用程式資訊清單設定,並查看重要資訊,現在可以探索如何使用 OpenXR 建構應用程式: