Android XR adalah ekstensi dari platform dan ekosistem Android. Android XR SDK dirancang untuk memungkinkan Anda mem-build aplikasi XR menggunakan framework dan alat Android yang sudah dikenal atau menggunakan standar terbuka seperti OpenXR dan WebXR. Semua aplikasi seluler atau layar besar yang kompatibel akan tersedia untuk diinstal di headset XR dari Play Store. Tinjau pertimbangan kompatibilitas untuk melihat apakah aplikasi Anda kompatibel.
Panduan ini menjelaskan area berikut:
- Memilih alat dan teknologi pengembangan
- Mendesain aplikasi untuk Android XR
- Mengonfigurasi file manifes aplikasi
- Pertimbangan kompatibilitas manifes aplikasi
- Memahami izin untuk Android XR
- Memastikan kualitas aplikasi Android XR
- Memaketkan dan mendistribusikan aplikasi untuk Android XR
Memilih alat dan teknologi pengembangan
Saat mem-build aplikasi untuk Android XR, Anda dapat memilih dari platform dan teknologi pengembangan berikut:
Jetpack XR SDK
Jetpack XR SDK berisi library Jetpack Android XR yang dibuat untuk memanfaatkan kemampuan unik perangkat XR. Mulai dengan SDK ini jika Anda ingin melakukan salah satu hal berikut:
- Mengoptimalkan atau meningkatkan aplikasi seluler atau tablet Android yang ada
- Mem-build aplikasi Android XR baru menggunakan Android Studio dan Jetpack
Jika Anda sudah merasa nyaman mengembangkan dengan Android Jetpack, Jetpack XR SDK adalah pilihan yang tepat untuk Anda. Library ini dirancang untuk berintegrasi secara lancar dengan framework dan library tersebut, serta memungkinkan Anda menggunakan pengetahuan yang ada untuk membuat pengalaman XR imersif.
Pelajari lebih lanjut cara mengembangkan dengan Jetpack XR SDK.
Unity
Unity Engine adalah game engine pengembangan 3D real-time yang memungkinkan seniman, desainer, dan developer berkolaborasi untuk menciptakan pengalaman imersif dan interaktif. Dukungan Android XR Unity memberi Anda kontrol tingkat tinggi atas pengalaman 3D yang Anda kembangkan, sekaligus mendapatkan manfaat dari dukungan OpenXR dan ekosistem developer Unity yang sudah mapan.
Jika Anda sudah memiliki pengalaman XR yang dibuat dengan Unity atau jika Anda sudah terbiasa dengan pengembangan Unity, mulailah dengan opsi ini.
Pelajari lebih lanjut cara mengembangkan dengan Unity untuk Android XR.
OpenXR
OpenXR adalah standar terbuka bebas royalti yang dapat digunakan untuk mem-build pengalaman XR multiplatform berperforma tinggi. Android XR mendukung OpenXR 1.0 dan 1.1, dan kami memperluas spesifikasi dengan ekstensi baru untuk Android XR. Karena Android XR dibuat berdasarkan standar terbuka, alat pengembangan yang mendukung OpenXR dan Android harus kompatibel dengan Android XR.
Pelajari lebih lanjut dukungan OpenXR untuk Android XR.
WebXR
WebXR memungkinkan Anda membuat pengalaman imersif untuk web. API ini memberikan akses ke perangkat VR dan AR di browser web yang kompatibel seperti Chrome di Android XR.
Mulai dengan opsi ini jika Anda ingin mem-build pengalaman XR untuk web atau jika Anda ingin menambahkan kemampuan XR ke aplikasi web. Pengalaman WebXR yang ada juga akan berfungsi di Android XR.
Pelajari lebih lanjut cara mem-build aplikasi web dengan WebXR.
Mendesain untuk XR
XR memperluas platform desain di luar layar datar tradisional; Anda dapat mendesain pengalaman imersif yang memadukan realitas fisik dan virtual. Baik Anda mem-build pengalaman baru atau menambahkan elemen imersif ke aplikasi yang ada, panduan desain untuk Android XR dapat membantu Anda memulai.
Mengonfigurasi file manifes aplikasi
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 terdiferensiasi XR, file manifes Anda harus berisi elemen dan atribut berikut:
Properti PROPERTY_ACTIVITY_XR_START_MODE
Properti android:name="android.window.PROPERTY_ACTIVITY_XR_START_MODE"
memberi tahu sistem bahwa aktivitas harus diluncurkan dalam mode tertentu saat
aktivitas dimulai.
Ada tiga kemungkinan nilai untuk properti ini:
XR_ACTIVITY_START_MODE_HOME_SPACE
(khusus Jetpack XR SDK)XR_ACTIVITY_START_MODE_FULL_SPACE_MANAGED
(khusus Jetpack XR SDK)XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED
(Khusus OpenXR)
XR_ACTIVITY_START_MODE_HOME_SPACE
(Khusus aplikasi yang dibuat dengan Jetpack XR SDK)
Gunakan mode mulai ini untuk meluncurkan aplikasi di Ruang Beranda. Di Ruang Utama, beberapa aplikasi dapat berjalan berdampingan, sehingga pengguna dapat melakukan multitasking. Semua aplikasi Android seluler atau layar besar dapat beroperasi di Ruang Beranda, serta aplikasi XR yang dibuat menggunakan Jetpack XR SDK.
<manifest ... >
<application ... >
<property
android:name="android.window.PROPERTY_XR_ACTIVITY_START_MODE"
android:value="XR_ACTIVITY_START_MODE_HOME_SPACE" />
<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_ACTIVITY_START_MODE_FULL_SPACE_MANAGED
(Khusus aplikasi yang dibuat dengan Jetpack XR SDK)
Gunakan mode mulai ini untuk meluncurkan aplikasi Anda di Ruang Penuh. Dalam Ruang Penuh, hanya satu aplikasi yang berjalan dalam satu waktu, tanpa batas ruang, dan semua aplikasi lainnya disembunyikan.
<manifest ... >
<application ... >
<property
android:name="android.window.PROPERTY_XR_ACTIVITY_START_MODE"
android:value="XR_ACTIVITY_START_MODE_FULL_SPACE_MANAGED" />
<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_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED
(Khusus aplikasi yang dibuat dengan OpenXR)
Aplikasi yang di-build dengan OpenXR diluncurkan di Ruang Penuh dan harus menggunakan
mode mulai XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED
. Sinyal ruang penuh yang tidak dikelola
ke Android XR, 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>
Fitur PackageManager untuk aplikasi XR
Saat 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 XR.
android.software.xr.immersive
Jika aplikasi Anda menargetkan platform Android XR dan hanya berjalan di platform yang mendukung XR, tetapkan nilai ke benar (true). Jika aplikasi Anda memiliki beberapa fitur yang dioptimalkan untuk XR tetapi juga dapat berjalan di perangkat non-XR, tetapkan nilai ke salah (false).
Aplikasi yang dibuat dengan OpenXR atau Unity diperlukan untuk menetapkan nilai ini ke benar.
<uses-feature android:name="android.software.xr.immersive" 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 benar (true). Jika aplikasi Anda mendukung pengontrol, tetapi dapat beroperasi tanpanya, tetapkan ke salah (false).
<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 fidelitas tinggi agar berfungsi dengan benar, termasuk posisi, orientasi, dan kecepatan sendi di tangan pengguna. Jika aplikasi Anda mendukung pelacakan tangan dan tidak dapat berfungsi tanpa pelacakan tangan, tetapkan nilai ke benar (true). Jika aplikasi Anda mendukung pelacakan tangan, tetapi dapat beroperasi tanpa pelacakan tangan, tetapkan ke salah (false).
<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 agar input berfungsi dengan benar. Jika aplikasi Anda mendukung pelacakan mata untuk input dan tidak dapat berfungsi tanpanya, tetapkan nilai ke benar (true). Jika aplikasi Anda mendukung pelacakan mata untuk input, tetapi dapat beroperasi tanpanya, tetapkan ke salah (false).
<uses-feature android:name="android.hardware.xr.input.eye_tracking" android:required="true" />
Pertimbangan kompatibilitas manifes aplikasi untuk aplikasi seluler dan perangkat layar besar
Seperti yang dijelaskan di bagian Fitur PackageManager untuk aplikasi XR, aplikasi
mendeklarasikan bahwa aplikasi menggunakan fitur dengan mendeklarasikannya dalam elemen
<uses-feature>
dalam manifes aplikasi. Beberapa fitur, seperti telepon atau GPS, mungkin tidak
kompatibel dengan semua perangkat.
Fitur yang tidak didukung
Google Play Store memfilter aplikasi yang tersedia untuk diinstal di perangkat menggunakan deklarasi fitur Android berikut.
Hardware Kamera
android.hardware.camera.autofocus
android.hardware.camera.capability.manual_post_processing
android.hardware.camera.capability.manual_sensor
android.hardware.camera.capability.raw
android.hardware.camera.concurrent
android.hardware.camera.external
android.hardware.camera.level.full
Konektivitas
android.hardware.ipsec_tunnel_migration
Konfigurasi Perangkat
Konfigurasi Faktor Bentuk
android.hardware.type.automotive
android.hardware.type.embedded
android.hardware.type.television
android.software.leanback_only
Input
android.software.input_methods
Lokasi
Near Field Communication
Konfigurasi dan Hardware Keamanan
android.hardware.se.omapi.uicc
android.hardware.biometrics.face
android.hardware.identity_credential
android.hardware.identity_credential_direct_access
android.hardware.keystore.limited_use_key
android.hardware.keystore.single_use_key
android.hardware.strongbox_keystore
Sensor
android.hardware.sensor.accelerometer_limited_axes
android.hardware.sensor.accelerometer_limited_axes_uncalibrated
android.hardware.sensor.ambient_temperature
android.hardware.sensor.barometer
android.hardware.sensor.gyroscope_limited_axes
android.hardware.sensor.gyroscope_limited_axes_uncalibrated
android.hardware.sensor.heading
android.hardware.sensor.heartrate
android.hardware.sensor.heartrate.ecg
android.hardware.sensor.hinge_angle
android.hardware.sensor.relative_humidity
android.hardware.sensor.stepcounter
android.hardware.sensor.stepdetector
Konfigurasi Software
android.software.connectionservice
android.software.expanded_picture_in_picture
android.software.live_wallpaper
android.software.picture_in_picture
android.software.wallet_location_based_suggestions
Telepon
android.hardware.telephony.calling
android.hardware.telephony.cdma
android.hardware.telephony.data
android.hardware.telephony.euicc
android.hardware.telephony.euicc.mep
android.hardware.telephony.gsm
android.hardware.telephony.ims
android.hardware.telephony.mbms
android.hardware.telephony.messaging
android.hardware.telephony.radio.access
android.hardware.telephony.subscription
Virtual Reality (Lama)
android.hardware.vr.headtracking
android.hardware.vr.high_performance
Widget
Memahami izin untuk XR
Sama seperti aplikasi di perangkat seluler dan faktor bentuk lainnya, beberapa fungsi yang ditawarkan oleh aplikasi XR mungkin mengharuskan aplikasi Anda untuk mendeklarasikan izin di file AndroidManifest aplikasi. Dalam kasus izin berbahaya, aplikasi Anda mungkin perlu meminta izin runtime. Baca Izin di Android dan praktik terbaik izin untuk mengetahui informasi yang lebih mendalam.
Izin untuk fitur XR
Izin berikut dapat digunakan oleh aplikasi XR. Semua izin di bagian ini dianggap sebagai izin berbahaya, jadi Anda harus mendeklarasikannya dalam manifes aplikasi dan memintanya saat runtime.
android.permission.EYE_TRACKING
Kasus penggunaan yang memerlukan izin ini
Merepresentasikan pose dan orientasi mata pengguna, untuk tujuan avatar
Fitur Jetpack XR SDK yang memerlukan izin ini
t/a
Ekstensi OpenXR yang memerlukan izin ini
Fitur Unity yang memerlukan izin ini
Android XR: Wajah AR
android.permission.EYE_TRACKING_FINE
Kasus penggunaan yang memerlukan izin ini
Interaksi dan input pandangan mata
Fitur Jetpack XR SDK yang memerlukan izin ini
t/a
Ekstensi OpenXR yang memerlukan izin ini
Fitur Unity yang memerlukan izin ini
android.permission.FACE_TRACKING
Kasus penggunaan yang memerlukan izin ini
Melacak dan merender ekspresi wajah
Fitur Jetpack XR SDK yang memerlukan izin ini
t/a
Ekstensi OpenXR yang memerlukan izin ini
Fitur Unity yang memerlukan izin ini
android.permission.HAND_TRACKING
Kasus penggunaan yang memerlukan izin ini
Melacak pose sendi tangan serta kecepatan sudut dan linear; Menggunakan representasi mesh tangan pengguna
Fitur Jetpack XR SDK yang memerlukan izin ini
t/a
Ekstensi OpenXR yang memerlukan izin ini
Fitur Unity yang memerlukan izin ini
android.permission.SCENE_UNDERSTANDING
Kasus penggunaan yang memerlukan izin ini
Estimasi cahaya; memproyeksikan passthrough ke permukaan mesh; melakukan raycast terhadap objek yang dapat dilacak di lingkungan; pelacakan bidang; pelacakan objek; bekerja dengan kedalaman untuk oklusi dan hit test; anchor persisten.
Fitur Jetpack XR SDK yang memerlukan izin ini
Pelacakan Bidang Datar
Hit Test
Persistensi Anchor
Ekstensi OpenXR yang memerlukan izin ini
Fitur Unity yang memerlukan izin ini
Memastikan kualitas aplikasi Android XR
Untuk memastikan aplikasi Anda memberikan pengalaman pengguna yang baik, tinjau panduan kualitas aplikasi Android XR kami.
Mengemas dan mendistribusikan aplikasi untuk Android XR
Android XR menghadirkan berbagai aplikasi dan pengalaman ke headset XR melalui Google Play. Dalam panduan untuk memaketkan dan mendistribusikan aplikasi untuk Android XR, Anda akan menemukan informasi tentang cara memulai Play Store dan Konsol Play, memublikasikan jalur, menyiapkan Android app bundle, dan batasan ukuran aplikasi.