Richiedere le autorizzazioni hardware per gli occhiali AI

Dispositivi XR applicabili
Queste indicazioni ti aiutano a creare esperienze per questi tipi di dispositivi XR.
AI Glasses

Proprio come su uno smartphone, l'accesso a hardware sensibile come la fotocamera e il microfono degli occhiali AI richiede il consenso esplicito dell'utente. Queste sono considerate autorizzazioni specifiche per gli occhiali e la tua app deve richiederle in fase di runtime, anche se dispone già delle autorizzazioni corrispondenti sullo smartphone.

Dichiarare le autorizzazioni nel manifest dell'app

Prima di richiedere le autorizzazioni, devi dichiararle nel file manifest dell'app utilizzando l'elemento <uses-permission>. Questa dichiarazione rimane la stessa indipendentemente dal fatto che l'autorizzazione riguardi una funzionalità specifica per lo smartphone o per gli occhiali AI, ma devi comunque richiederla esplicitamente per l'hardware o la funzionalità specifici per gli occhiali.

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

Registra il launcher delle autorizzazioni

Per richiedere le autorizzazioni per gli occhiali AI, devi prima utilizzare ActivityResultLauncher con il metodo ProjectedPermissionsResultContract per registrare l'avvio delle autorizzazioni.

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

Punti chiave sul codice

Crea la funzione di richiesta

Successivamente, creerai una funzione che utilizza il launcher delle autorizzazioni della tua app per richiedere le autorizzazioni all'utente in fase di 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))
}

Punti chiave sul codice

  • La funzione requestHardwarePermissions crea un oggetto ProjectedPermissionsRequestParams. Questo oggetto raggruppa l'elenco delle autorizzazioni necessarie alla tua app e la motivazione rivolta agli utenti. Rendi la motivazione chiara e concisa per spiegare perché la tua app ha bisogno di queste autorizzazioni.
  • La chiamata a launch nel launcher attiva il flusso utente di richiesta di autorizzazione.
  • La tua app deve gestire correttamente i risultati concessi e negati nel callback del launcher.

Crea la funzione di controllo delle autorizzazioni

Successivamente, creerai una funzione che può verificare se l'utente ha concesso le autorizzazioni alla tua app.

private fun hasCameraPermission(): Boolean {
    return ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) ==
            PackageManager.PERMISSION_GRANTED
}

Aggiungi la logica di richiesta di autorizzazione

Infine, crea la logica che utilizza queste funzioni per verificare e richiedere le autorizzazioni in fase di runtime.

if (hasCameraPermission()) {
    initializeGlassesFeatures()
} else {
    requestHardwarePermissions()
}

Punti chiave sul codice

Comprendere il flusso utente della richiesta di autorizzazione

Quando avvii una richiesta di autorizzazione utilizzando il metodo ProjectedPermissionsResultContract, il sistema avvia un flusso utente coordinato sia sugli occhiali AI sia sullo smartphone.

Durante il flusso utente delle autorizzazioni, ecco cosa possono aspettarsi la tua app e l'utente:

  1. Sugli occhiali AI: un'attività viene visualizzata sul dispositivo proiettato (occhiali), che invita l'utente a guardare lo smartphone per continuare.

  2. Sullo smartphone: contemporaneamente, un'attività viene avviata sul dispositivo host (smartphone). Questa schermata mostra la stringa di motivazione che hai fornito e offre all'utente la possibilità di procedere o annullare.

  3. Sul telefono: se l'utente accetta la motivazione, sullo smartphone viene visualizzata una finestra di dialogo modificata delle autorizzazioni di sistema Android che informa l'utente che sta concedendo l'autorizzazione per gli occhiali AI (non per lo smartphone) e l'utente può concedere o negare formalmente l'autorizzazione.

  4. Ricezione del risultato: dopo che l'utente ha fatto la sua scelta definitiva, le attività sullo smartphone e sugli occhiali AI vengono chiuse. Viene quindi richiamato il callback ActivityResultLauncher con una mappa contenente lo stato concesso per ogni autorizzazione richiesta.