Hardwareberechtigungen für Audio- und Displaybrillen anfordern

XR‑Geräte, für die der Leitfaden gilt
Dieser Leitfaden hilft Ihnen dabei, Erlebnisse für die folgenden Arten von XR-Geräten zu entwickeln.
Audio- und
Displaybrillen

Wie bei einem Smartphone ist für den Zugriff auf sensible Hardware wie die Kamera und das Mikrofon von Audio- und Displaybrillen die ausdrückliche Nutzereinwilligung 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.

Berechtigungen im Manifest Ihrer App deklarieren

Bevor Sie Berechtigungen anfordern, müssen Sie sie in der Manifestdatei Ihrer App mit dem Element <uses-permission> deklarieren. Diese Deklaration bleibt gleich, unabhängig davon, ob die Berechtigung für ein Smartphone oder eine brillenspezifische Funktion gilt. Sie müssen sie jedoch 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 camera. -->
    <uses-permission android:name="android.permission.CAMERA"/>
    <application ...>
        ...
    </application>
</manifest>

Berechtigungsstarter registrieren

Wenn Sie Berechtigungen für Audio- und Displaybrillen anfordern möchten, müssen Sie zuerst das ActivityResultLauncher mit der ProjectedPermissionsResultContract Methode verwenden, um den Berechtigungsstarter zu registrieren.

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

Wichtige Punkte zum Code

Anfragefunktion erstellen

Als Nächstes erstellen Sie eine Funktion, mit der Sie mit dem Berechtigungsstarter Ihrer App die Berechtigungen zur Laufzeit vom Nutzer anfordern können.

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

Wichtige Punkte zum Code

  • Die requestHardwarePermissions Funktion erstellt ein ProjectedPermissionsRequestParams Objekt. Dieses Objekt bündelt die Liste der Berechtigungen, die Ihre App benötigt, und die für den Nutzer sichtbare Begründung. Die Begründung sollte klar und prägnant sein, um zu erklären, warum Ihre App diese Berechtigungen benötigt.
  • Wenn Sie launch für den Starter aufrufen, wird der Nutzerablauf für die Berechtigungsanfrage ausgelöst.
  • Ihre App sollte sowohl gewährte als auch verweigerte Ergebnisse im Callback des Starters problemlos verarbeiten können.

Funktion zur Berechtigungsprüfung erstellen

Als Nächstes erstellen Sie eine Funktion, mit der Sie prüfen können, ob der Nutzer Ihrer App Berechtigungen erteilt hat.

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

Logik für Berechtigungsanfrage hinzufügen

Erstellen Sie schließlich die Logik, mit der diese Funktionen verwendet werden, um die Berechtigungen zur Laufzeit zu prüfen und anzufordern.

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

Wichtige Punkte zum Code

  • Wenn der Nutzer Ihrer App bereits die erforderlichen Berechtigungen erteilt hat, wird die Funktion initializeGlassesFeatures aufgerufen, um die App zu initialisieren. Diese Funktion ist als Teil der Aktivität Ihrer App für KI Brillen definiert.

Nutzerablauf für Berechtigungsanfrage

Wenn Sie eine Berechtigungsanfrage mit der ProjectedPermissionsResultContract Methode starten, initiiert das System einen koordinierten Nutzerablauf sowohl auf der Brille als auch auf dem Smartphone.

Während des Nutzerablaufs für Berechtigungen können Ihre App und der Nutzer Folgendes erwarten:

  1. Auf der 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 die von Ihnen angegebene Begründung angezeigt und der Nutzer hat die Möglichkeit, fortzufahren oder abzubrechen.

  3. Auf dem Smartphone: Wenn der Nutzer die Begründung akzeptiert, wird auf dem Smartphone ein geändertes Android Systemdialogfeld für Berechtigungen angezeigt, in dem der Nutzer darüber informiert wird, dass er die Berechtigung für die Datenbrille (nicht für das Smartphone) erteilt. Der Nutzer kann die Berechtigung dann formell erteilen oder verweigern.

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