Comme sur un téléphone, l'accès à du matériel sensible comme l'appareil photo et le micro des lunettes d'IA nécessite le consentement explicite de l'utilisateur. Il s'agit d'autorisations spécifiques aux lunettes. Votre application doit les 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é spécifique à un téléphone ou à des lunettes connectées. Toutefois, vous devez toujours la demander explicitement pour le matériel ou les fonctionnalités 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 IA, vous devez d'abord utiliser 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
- Le code crée un
ActivityResultLauncherà l'aide de la méthodeProjectedPermissionsResultContract. Le rappel reçoit une carte des noms d'autorisation et de leur état d'autorisation. - Vous devez spécifier les autorisations requises par votre application, telles que
Manifest.permission.CAMERAouManifest.permission.RECORD_AUDIO.
Créer la fonction de requête
Vous allez ensuite 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
- La fonction
requestHardwarePermissionscrée un objetProjectedPermissionsRequestParams. Cet objet regroupe la liste des autorisations dont votre application a besoin et la justification visible par l'utilisateur. Expliquez clairement et de manière concise pourquoi votre application a besoin de ces autorisations. - L'appel de
launchsur le lanceur déclenche le flux utilisateur de demande d'autorisation. - Votre application doit gérer de manière optimale les résultats accordés et refusés dans le rappel du lanceur.
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
initializeGlassesFeaturesest appelée pour initialiser l'expérience de votre application. Cette fonction est définie comme faisant partie de l'activité de votre application pour les lunettes IA.
Comprendre le parcours utilisateur de la demande d'autorisation
Lorsque vous lancez une demande d'autorisation à l'aide de la méthode ProjectedPermissionsResultContract, le système lance un flux utilisateur coordonné à la fois sur les lunettes d'IA et sur le téléphone.
Voici ce à quoi votre application et l'utilisateur peuvent s'attendre lors du parcours utilisateur des autorisations :
Sur les lunettes IA : une activité s'affiche sur l'appareil projeté (lunettes), invitant l'utilisateur à regarder son téléphone pour continuer.
Sur le téléphone : une activité se lance simultanément sur l'appareil hôte (téléphone). Cet écran affiche la chaîne de justification que vous avez fournie et donne à l'utilisateur la possibilité de continuer ou d'annuler.
Sur le téléphone : si l'utilisateur accepte la justification, une boîte de dialogue modifiée des autorisations système Android s'affiche sur le téléphone. Elle indique à l'utilisateur qu'il accorde l'autorisation pour les lunettes d'IA (et non pour le téléphone). L'utilisateur peut alors accorder ou refuser formellement l'autorisation.
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 IA sont fermées. Votre rappel
ActivityResultLauncherest ensuite appelé avec une carte contenant l'état d'autorisation pour chaque autorisation demandée.