Mulai menggunakan OpenXR untuk Android XR

Perangkat XR yang kompatibel
Panduan ini membantu Anda membangun pengalaman untuk jenis perangkat XR ini.
Headset XR
Kacamata XR Berkabel

Sebelum Anda mulai membangun dengan ekstensi OpenXR yang didukung atau dengan mesin yang didukung, tinjau informasi dan selesaikan tugas apa pun di bagian berikut untuk memastikan aplikasi Anda dikonfigurasi untuk pengembangan XR imersif.

Mengonfigurasi file manifes aplikasi Anda

Seperti project aplikasi Android lainnya, aplikasi Android XR Anda harus memiliki file AndroidManifest.xml dengan setelan manifes tertentu. File manifes menjelaskan informasi penting tentang aplikasi Anda ke alat build Android, sistem operasi Android, dan Google Play. Lihat panduan ringkasan manifes aplikasi untuk mengetahui informasi selengkapnya.

Untuk aplikasi yang dibedakan XR, file manifes Anda harus berisi elemen dan atribut berikut:

Properti PROPERTY_XR_ACTIVITY_START_MODE

Properti android:name="android.window.PROPERTY_XR_ACTIVITY_START_MODE" memungkinkan sistem mengetahui bahwa aktivitas harus diluncurkan dalam mode tertentu saat aktivitas dimulai.

Properti ini memiliki nilai berikut:

  • XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED (Khusus OpenXR)

XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED

Aplikasi yang dibangun dengan OpenXR diluncurkan di Ruang Penuh dan harus menggunakan mode mulai XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED. Ruang Penuh yang Tidak Dikelola memberi sinyal ke Android XR bahwa aplikasi menggunakan 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>

Properti android:name="android.window.PROPERTY_XR_BOUNDARY_TYPE_RECOMMENDED" menunjukkan bahwa aplikasi harus diluncurkan dengan jenis batas tertentu. Aplikasi Anda harus menentukan XR_BOUNDARY_TYPE_LARGE jika dirancang untuk memungkinkan pengguna bergerak di ruang fisik mereka. Menentukan XR_BOUNDARY_TYPE_NO_RECOMMENDATION tidak memberikan rekomendasi untuk jenis batas keamanan, sehingga sistem menggunakan jenis yang sudah digunakan.

<manifest ... >

   <application ... >
       <property
           android:name="android.window.PROPERTY_XR_BOUNDARY_TYPE_RECOMMENDED"
           android:value="XR_BOUNDARY_TYPE_LARGE" />
   </application>
</manifest>

<uses-native-library> OpenXR

Aplikasi OpenXR harus mendeklarasikan penggunaan library OpenXR native agar berhasil memuat runtime-nya. Tanpa deklarasi ini, runtime akan gagal dimuat.

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

Fitur PackageManager untuk aplikasi XR

Saat Anda mendistribusikan aplikasi melalui Google Play Store, Anda dapat menentukan fitur hardware atau software yang diperlukan dalam manifes aplikasi. Elemen uses-feature memungkinkan Play Store memfilter aplikasi yang ditampilkan kepada pengguna dengan tepat.

Fitur berikut khusus untuk aplikasi yang dibedakan XR.

android.software.xr.api.openxr

Aplikasi yang menargetkan platform Android XR dan dibangun dengan OpenXR atau Unity harus menyertakan fitur ini dalam manifes aplikasi dengan atribut android:required yang ditetapkan ke true.

Aplikasi yang menggunakan Android XR Extensions Package for Unity versi 1.0.0 atau yang lebih tinggi atau Unity OpenXR: Android XR Package versi 0.5.0-exp.1 atau yang lebih tinggi tidak perlu menambahkan elemen ini secara manual ke manifes aplikasi. Kedua paket ini akan menyuntikkan elemen ini ke dalam manifes aplikasi untuk Anda.

Perangkat dapat menentukan versi untuk fitur ini, yang menunjukkan versi OpenXR tertinggi yang didukung oleh perangkat. 16 bit yang lebih tinggi mewakili bilangan utama, dan 16 bit yang lebih rendah mewakili bilangan minor. Misalnya, untuk menentukan OpenXR versi 1.1, nilai akan ditetapkan ke "0x00010001".

Aplikasi dapat menggunakan versi fitur untuk menunjukkan versi minimum OpenXR yang diperlukan aplikasi. Misalnya, jika aplikasi Anda memerlukan dukungan OpenXR versi 1.1, deklarasikan fitur berikut:

<uses-feature android:name="android.software.xr.api.openxr"
    android:version="0x00010001"
    android:required="true" />

android.hardware.xr.input.controller

Fitur ini menunjukkan bahwa aplikasi memerlukan input dari pengontrol gerakan 6DoF (derajat kebebasan) presisi tinggi agar berfungsi dengan benar. Jika aplikasi Anda mendukung pengontrol dan tidak dapat berfungsi tanpanya, tetapkan nilai ke true. Jika aplikasi Anda mendukung pengontrol, tetapi dapat beroperasi tanpa pengontrol, setel ke 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

Flag ini menunjukkan bahwa aplikasi memerlukan pelacakan tangan dengan fidelitas tinggi agar berfungsi dengan benar, termasuk posisi, orientasi, dan kecepatan sambungan di tangan pengguna. Jika aplikasi Anda mendukung pelacakan tangan dan tidak dapat berfungsi tanpa pelacakan tangan, tetapkan nilai ke true. Jika aplikasi Anda mendukung pelacakan tangan, tetapi dapat beroperasi tanpa pelacakan tangan, setel ke 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

Flag ini menunjukkan bahwa aplikasi memerlukan pelacakan mata fidelitas tinggi untuk input agar berfungsi dengan benar. Jika aplikasi Anda mendukung pelacakan mata untuk input dan tidak dapat berfungsi tanpa pelacakan mata, tetapkan nilai ke true. Jika aplikasi Anda mendukung pelacakan mata untuk input, tetapi dapat beroperasi tanpa pelacakan mata, tetapkan ke 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" />

Langkah berikutnya

Setelah selesai mengonfigurasi manifes aplikasi dan meninjau informasi penting, pelajari cara membangun dengan OpenXR: