Demander des autorisations matérielles pour les lunettes audio et les lunettes à écran

Appareils XR concernés
Ces conseils vous aident à créer des expériences pour ces types d'appareils XR.
Lunettes audio et
lunettes d'affichage

Comme sur un téléphone, l'accès à du matériel sensible tel que l'appareil photo et le micro sur les lunettes audio et les lunettes d'affichage nécessite le consentement explicite de l'utilisateur. Il s'agit d' autorisations spécifiques aux lunettes, que votre application doit demander au moment de l'exécution, même si elle dispose déjà des autorisations correspondantes sur le téléphone.

Déclarer les autorisations dans le fichier manifeste de votre application

Avant de demander des autorisations, vous devez les déclarer dans le fichier manifeste de votre application à l'aide de l'élément <uses-permission>. Cette déclaration reste la même, que l'autorisation concerne une fonctionnalité du téléphone ou des lunettes, mais vous devez toujours la demander explicitement pour le matériel ou la fonctionnalité spécifiques aux lunettes.

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

Enregistrer le lanceur d'autorisations

Pour demander des autorisations pour les lunettes audio et les lunettes d'affichage, vous devez d'abord utiliser le ActivityResultLauncher avec la méthode ProjectedPermissionsResultContract pour enregistrer le lanceur d'autorisations.

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

Points clés concernant le code

Créer la fonction de requête

Ensuite, vous allez créer une fonction qui utilise le lanceur d'autorisations de votre application pour demander les autorisations à l'utilisateur au moment de l'exécution.

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

Points clés concernant le code

Créer la fonction de vérification des autorisations

Ensuite, vous allez créer une fonction qui peut vérifier si l'utilisateur a accordé des autorisations à votre application.

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

Ajouter la logique de demande d'autorisation

Enfin, créez la logique qui utilise ces fonctions pour vérifier et demander les autorisations au moment de l'exécution.

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

Points clés concernant le code

  • Si l'utilisateur a déjà accordé à votre application les autorisations requises, la fonction initializeGlassesFeatures est appelée pour initialiser l'expérience de votre application. Cette fonction est définie dans l'activité de votre application pour les lunettes d'IA.

Comprendre le flux utilisateur de la demande d'autorisation

Lorsque vous lancez une demande d'autorisation à l'aide de la ProjectedPermissionsResultContract méthode, le système lance un flux utilisateur coordonné sur les lunettes et le téléphone.

Voici ce à quoi votre application et l'utilisateur peuvent s'attendre pendant le flux utilisateur des autorisations :

  1. Sur les lunettes : une activité s'affiche sur l'appareil projeté (lunettes), demandant à l'utilisateur de regarder son téléphone pour continuer.

  2. Sur le téléphone : en même temps, une activité se lance sur l'appareil hôte (téléphone). Cet écran affiche la chaîne de justification que vous avez fournie et permet à l'utilisateur de continuer ou d'annuler.

  3. Sur le téléphone : si l'utilisateur accepte la justification, une boîte de dialogue d'autorisation du système Android modifiée s'affiche sur le téléphone pour lui indiquer qu'il accorde l'autorisation pour les lunettes (et non pour le téléphone). L'utilisateur peut alors accorder ou refuser formellement l'autorisation.

  4. Réception du résultat : une fois que l'utilisateur a fait son choix final, les activités sur le téléphone et les lunettes sont ignorées. Votre ActivityResultLauncher rappel est ensuite appelé avec un mappage contenant l'état d'autorisation pour chaque autorisation demandée.