Sama seperti di ponsel, mengakses hardware sensitif seperti kamera dan mikrofon di kacamata AI memerlukan izin eksplisit pengguna. Izin ini dianggap sebagai izin khusus kacamata, dan aplikasi Anda harus memintanya saat runtime, meskipun aplikasi sudah memiliki izin yang sesuai di ponsel.
Mendeklarasikan izin dalam manifes aplikasi Anda
Sebelum meminta izin, Anda harus mendeklarasikannya dalam file manifes aplikasi
menggunakan elemen <uses-permission>. Deklarasi ini tetap
sama, baik izinnya untuk fitur khusus ponsel atau kacamata AI,
tetapi Anda tetap harus memintanya secara eksplisit untuk hardware atau
fungsi khusus kacamata.
<manifest ...>
<!-- Only declare permissions that your app actually needs. In this example,
we declare permissions for the camera. -->
<uses-permission android:name="android.permission.CAMERA"/>
<application ...>
...
</application>
</manifest>
Mendaftarkan peluncur izin
Untuk meminta izin bagi kacamata AI, pertama-tama Anda menggunakan
ActivityResultLauncher dengan metode
ProjectedPermissionsResultContract untuk mendaftarkan peluncur
izin.
// Register the permissions launcher using the ProjectedPermissionsResultContract. private val requestPermissionLauncher: ActivityResultLauncher<List<ProjectedPermissionsRequestParams>> = registerForActivityResult(ProjectedPermissionsResultContract()) { results -> if (results[Manifest.permission.CAMERA] == true) { isPermissionDenied = false initializeGlassesFeatures() } else { // Handle permission denial. isPermissionDenied = true } }
Poin penting tentang kode
- Kode ini membuat
ActivityResultLaunchermenggunakan metodeProjectedPermissionsResultContract. Callback menerima peta nama izin ke status yang diberikan. - Anda perlu menentukan izin yang diperlukan aplikasi Anda, seperti
Manifest.permission.CAMERAatauManifest.permission.RECORD_AUDIO.
Buat fungsi permintaan
Selanjutnya, Anda akan membuat fungsi yang menggunakan peluncur izin aplikasi untuk meminta izin dari pengguna saat runtime.
private fun requestHardwarePermissions() { val params = ProjectedPermissionsRequestParams( permissions = listOf(Manifest.permission.CAMERA), rationale = "Camera access is required to overlay digital content on your physical environment." ) requestPermissionLauncher.launch(listOf(params)) }
Poin penting tentang kode
- Fungsi
requestHardwarePermissionsmembangun objekProjectedPermissionsRequestParams. Objek ini menggabungkan daftar izin yang diperlukan aplikasi Anda dan alasan yang ditampilkan kepada pengguna. Buat alasan yang jelas dan ringkas untuk menjelaskan mengapa aplikasi Anda memerlukan izin ini. - Memanggil
launchdi peluncur akan memicu alur pengguna permintaan izin. - Aplikasi Anda harus menangani hasil yang diberikan dan ditolak dengan baik di callback peluncur.
Buat fungsi pemeriksaan izin
Selanjutnya, Anda akan membuat fungsi yang dapat memeriksa apakah pengguna telah memberikan izin ke aplikasi Anda.
private fun hasCameraPermission(): Boolean { return ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED }
Menambahkan logika permintaan izin
Terakhir, buat logika yang menggunakan fungsi ini untuk memeriksa dan meminta izin saat runtime.
if (hasCameraPermission()) { initializeGlassesFeatures() } else { requestHardwarePermissions() }
Poin penting tentang kode
- Jika pengguna telah memberikan izin yang diperlukan ke aplikasi Anda, fungsi
initializeGlassesFeaturesakan dipanggil untuk menginisialisasi pengalaman aplikasi Anda. Fungsi ini ditentukan sebagai bagian dari aktivitas aplikasi Anda untuk kacamata AI.
Memahami alur pengguna permintaan izin
Saat Anda meluncurkan permintaan izin menggunakan metode ProjectedPermissionsResultContract, sistem akan memulai alur pengguna yang terkoordinasi di kacamata AI dan ponsel.
Selama alur penggunaan izin, berikut yang dapat diharapkan aplikasi Anda dan pengguna:
Di kacamata AI: Aktivitas muncul di perangkat yang diproyeksikan (kacamata), yang menginstruksikan pengguna untuk melihat ponsel mereka untuk melanjutkan.
Di ponsel: Secara bersamaan, aktivitas diluncurkan di perangkat host (ponsel). Layar ini menampilkan string alasan yang Anda berikan dan memberi pengguna opsi untuk melanjutkan atau membatalkan.
Di ponsel: Jika pengguna menyetujui alasan tersebut, dialog izin sistem Android yang telah diubah akan muncul di ponsel, yang memberi tahu pengguna bahwa mereka memberikan izin untuk perangkat kacamata AI (bukan ponsel), dan pengguna dapat memberikan atau menolak izin secara resmi.
Menerima hasil: Setelah pengguna membuat pilihan terakhir, aktivitas di ponsel dan kacamata AI akan ditutup. Callback
ActivityResultLauncherAnda kemudian dipanggil dengan peta yang berisi status yang diberikan untuk setiap izin yang diminta.