Prośba o uprawnienia do sprzętu okularów AI

Odpowiednie urządzenia XR
Te wskazówki pomogą Ci tworzyć treści na te urządzenia XR.
Okulary AI

Podobnie jak w przypadku telefonu, dostęp do wrażliwych elementów sprzętu, takich jak aparat i mikrofon w okularach AI, wymaga wyraźnej zgody użytkownika. Są to uprawnienia specyficzne dla okularów, o które aplikacja musi poprosić w czasie działania, nawet jeśli ma już odpowiednie uprawnienia na telefonie.

Z tego przewodnika dowiesz się, jak:

  • Deklarowanie uprawnień w manifeście aplikacji
  • Prośba o uprawnienia
  • Informacje o procesie uprawnień

Zadeklaruj uprawnienia w manifeście aplikacji.

Zanim poprosisz o uprawnienia, musisz zadeklarować je w pliku manifestu aplikacji za pomocą elementu <uses-permission>. Ta deklaracja pozostaje taka sama niezależnie od tego, czy uprawnienie dotyczy telefonu, czy funkcji okularów z AI, ale nadal musisz wyraźnie poprosić o nie w przypadku sprzętu lub funkcji specyficznych dla okularów.

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

Prośba o uprawnienia

Aby poprosić o uprawnienia do korzystania z okularów AI, użyj metody ActivityResultLauncher z metodą ProjectedPermissionsResultContract(). Musisz określić, jakich uprawnień wymaga Twoja aplikacja, np. Manifest.permission.CAMERA lub Manifest.permission.RECORD_AUDIO. Podaj jasne i zwięzłe uzasadnienie, dlaczego Twoja aplikacja potrzebuje tych uprawnień. Uzasadnienie to jest wyświetlane użytkownikowi, aby pomóc mu w podjęciu świadomej decyzji.

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

Najważniejsze informacje o kodzie

Poznaj proces żądania uprawnień

Gdy wyślesz prośbę o uprawnienia za pomocą metody ProjectedPermissionsResultContract(), system zainicjuje skoordynowany proces interakcji z użytkownikiem zarówno na okularach AI, jak i na telefonie.

Podczas procesu przyznawania uprawnień aplikacja i użytkownik mogą oczekiwać tych działań:

  1. Na okularach AI: na projektorze (okularach) pojawia się aktywność, która instruuje użytkownika, aby spojrzał na telefon, aby kontynuować.

  2. Na telefonie: jednocześnie na urządzeniu hosta (telefonie) uruchamia się aktywność. Na tym ekranie wyświetlany jest podany przez Ciebie ciąg znaków z uzasadnieniem. Użytkownik może kontynuować lub anulować działanie.

  3. Na telefonie: jeśli użytkownik zaakceptuje uzasadnienie, na telefonie pojawi się zmodyfikowane okno uprawnień systemowych Androida, w którym będzie informacja, że użytkownik przyznaje uprawnienia urządzeniu z okularami AI (a nie telefonowi). Użytkownik może formalnie przyznać lub odrzucić uprawnienia.

  4. Otrzymywanie wyniku: po dokonaniu ostatecznego wyboru przez użytkownika działania na telefonie i okularach AI zostaną zamknięte. Następnie wywoływane jest wywołanie zwrotne ActivityResultLauncher z mapą zawierającą stan przyznania każdego z wymaganych uprawnień.