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