開始使用 Android XR 的 OpenXR

適用 XR 裝置
這份指南可協助您為這類 XR 裝置打造體驗。
XR 頭戴式裝置
有線 XR 眼鏡

開始使用支援的 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>

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 建構應用程式: