Hardwareberechtigungen für KI-Brillen anfordern

Anwendbare XR‑Geräte
Dieser Leitfaden hilft Ihnen dabei, Erlebnisse für diese Arten von XR-Geräten zu entwickeln.
AI Glasses

Genau wie bei einem Smartphone ist für den Zugriff auf sensible Hardware wie die Kamera und das Mikrofon von KI-Brillen die ausdrückliche Einwilligung des Nutzers erforderlich. Diese Berechtigungen gelten als brillenspezifische Berechtigungen und müssen von Ihrer App zur Laufzeit angefordert werden, auch wenn sie bereits die entsprechenden Berechtigungen auf dem Smartphone hat.

In diesem Leitfaden erfahren Sie, wie Sie:

  • Berechtigungen im Manifest Ihrer App deklarieren
  • Berechtigungen anfordern
  • Informationen zum Berechtigungsablauf

Berechtigungen im Manifest Ihrer App deklarieren

Bevor Sie Berechtigungen anfordern, müssen Sie sie mit dem Element <uses-permission> im Manifest Ihrer App deklarieren. Diese Deklaration bleibt gleich, unabhängig davon, ob die Berechtigung für eine Smartphone- oder eine KI-Brillen-spezifische Funktion gilt. Sie müssen sie jedoch weiterhin explizit für brillenspezifische Hardware oder Funktionen anfordern.

<manifest ...>
    <!-- Only declare permissions that your app actually needs. In this example,
    we declare permissions for the microphone. -->
    <uses-permission android:name="android.permission.RECORD_AUDIO"/>
    <application ...>
        ...
    </application>
</manifest>

Berechtigungen anfordern

Wenn Sie Berechtigungen für KI-Brillen anfordern möchten, verwenden Sie die Methode ActivityResultLauncher mit der Methode ProjectedPermissionsResultContract(). Sie müssen angeben, welche Berechtigungen Ihre App benötigt, z. B. Manifest.permission.CAMERA oder Manifest.permission.RECORD_AUDIO. Geben Sie eine klare und prägnante Begründung dafür an, warum Ihre App diese Berechtigungen benötigt. Diese Begründung wird dem Nutzer angezeigt, damit er eine fundierte Entscheidung treffen kann.

class SampleGlassesActivity : ComponentActivity() {

  // Register the permissions launcher
    private val requestPermissionLauncher: ActivityResultLauncher<List<ProjectedPermissionsRequestParams>> =
        registerForActivityResult(ProjectedPermissionsResultContract()) { results ->
            // Check the result for the specific RECORD_AUDIO permission
            if (results[Manifest.permission.RECORD_AUDIO] == true) {
                onPermissionGranted()
            } else {
                onPermissionDenied()
            }
        }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        // Audio permission is critical for the displayless AI glasses experience
        checkAndRequestAudioPermission()

        setContent {
            GlimmerTheme {
                DisplayGlassesUi()
            }
        }
    }

    // Checks for the required RECORD_AUDIO permission and requests it if necessary.

    private fun checkAndRequestAudioPermission() {
        val permission = Manifest.permission.RECORD_AUDIO
        val permissionStatus = ContextCompat.checkSelfPermission(this, permission)

        if (permissionStatus == PackageManager.PERMISSION_GRANTED) {
            // Permission is already granted
            onPermissionGranted()
        } else {
            // Permission is not granted, request it
            requestAudioPermission()
        }
    }

    private fun requestAudioPermission() {
        val params = ProjectedPermissionsRequestParams(
                        permissions = listOf(Manifest.permission.RECORD_AUDIO),
            // The rationale should explain why this permission is needed.
            // For displayless AI glasses, it's often the main input mechanism.
            rationale = "Microphone access is essential for voice commands and features on these AI glasses."
        )
        requestPermissionLauncher.launch(listOf(params))
    }

    private fun onPermissionGranted() {
        // Implement the logic for when the permission is granted

    }

    private fun onPermissionDenied() {
        // Implement the logic for when the permission is denied.
        // On displayless AI glasses, if the app requires voice/mic it should exit the activity if the critical permission is denied.
        finish()
    }
}

Wichtige Punkte zum Code

Ablauf der Berechtigungsanfrage

Wenn Sie eine Berechtigungsanfrage mit der Methode ProjectedPermissionsResultContract() starten, initiiert das System einen koordinierten Nutzerfluss sowohl auf der KI-Brille als auch auf dem Smartphone.

So läuft die Berechtigungsanfrage ab:

  1. Auf der KI-Brille: Auf dem projizierten Gerät (Brille) wird eine Aktivität angezeigt, in der der Nutzer aufgefordert wird, auf sein Smartphone zu schauen, um fortzufahren.

  2. Auf dem Smartphone: Gleichzeitig wird eine Aktivität auf dem Hostgerät (Smartphone) gestartet. Auf diesem Bildschirm wird der von Ihnen angegebene Begründungsstring angezeigt. Der Nutzer kann dann fortfahren oder abbrechen.

  3. Auf dem Smartphone: Wenn der Nutzer die Begründung akzeptiert, wird auf dem Smartphone ein geänderter Android-Systemberechtigungsdialog angezeigt, in dem der Nutzer darüber informiert wird, dass er die Berechtigung für die KI-Brille (nicht für das Smartphone) erteilt. Der Nutzer kann die Berechtigung dann offiziell erteilen oder verweigern.

  4. Ergebnis erhalten: Nachdem der Nutzer seine endgültige Auswahl getroffen hat, werden die Aktivitäten auf dem Smartphone und der KI-Brille beendet. Ihr ActivityResultLauncher-Callback wird dann mit einer Karte aufgerufen, die den gewährten Status für jede angeforderte Berechtigung enthält.