Podobnie jak w przypadku telefonu, dostęp do wrażliwych elementów sprzętu, takich jak aparat i mikrofon w okularach audio i okularach wyświetlających obraz, wymaga wyraźnej zgody użytkownika. Są to uprawnienia specyficzne dla okularów, a aplikacja musi o nie poprosić w czasie działania, nawet jeśli ma już odpowiednie uprawnienia na telefonie.
Deklarowanie uprawnień w pliku manifestu aplikacji
Zanim poprosisz o uprawnienia, musisz zadeklarować je w pliku manifestu aplikacji
za pomocą elementu <uses-permission>. Deklaracja pozostaje taka sama niezależnie od tego, czy uprawnienie dotyczy telefonu, czy funkcji specyficznej dla okularów, 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 camera. -->
<uses-permission android:name="android.permission.CAMERA"/>
<application ...>
...
</application>
</manifest>
Rejestrowanie narzędzia do uruchamiania uprawnień
Aby poprosić o uprawnienia do okularów audio i okularów wyświetlających obraz, najpierw użyj
ActivityResultLauncher z metodą ProjectedPermissionsResultContract
, aby zarejestrować narzędzie do uruchamiania uprawnień.
// 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 } }
Najważniejsze informacje o kodzie
- Kod tworzy
ActivityResultLauncherza pomocą metodyProjectedPermissionsResultContract. Wywołanie zwrotne otrzymuje mapę nazw uprawnień i ich stanów przyznania. - Musisz określić, jakich uprawnień wymaga Twoja aplikacja, np.
Manifest.permission.CAMERAlubManifest.permission.RECORD_AUDIO.
Tworzenie funkcji żądania
Następnie utworzysz funkcję, która używa narzędzia do uruchamiania uprawnień aplikacji, aby poprosić użytkownika o uprawnienia w czasie działania.
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)) }
Najważniejsze informacje o kodzie
- Funkcja
requestHardwarePermissionstworzy obiektProjectedPermissionsRequestParams. Ten obiekt zawiera listę uprawnień, których potrzebuje Twoja aplikacja, oraz uzasadnienie widoczne dla użytkownika. Uzasadnienie powinno być jasne i zwięzłe, aby wyjaśnić, dlaczego aplikacja potrzebuje tych uprawnień. - Wywołanie
launchw programie uruchamiającym powoduje uruchomienie procesu prośby o uprawnienia użytkownika. - Aplikacja powinna prawidłowo obsługiwać wyniki przyznania i odrzucenia uprawnień w wywołaniu zwrotnym narzędzia do uruchamiania.
Tworzenie funkcji sprawdzania uprawnień
Następnie utworzysz funkcję, która może sprawdzić, czy użytkownik przyznał Twojej aplikacji uprawnienia.
private fun hasCameraPermission(): Boolean { return ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED }
Dodawanie logiki prośby o uprawnienia
Na koniec utwórz logikę, która używa tych funkcji do sprawdzania i żądania uprawnień w czasie działania.
if (hasCameraPermission()) { initializeGlassesFeatures() } else { requestHardwarePermissions() }
Najważniejsze informacje o kodzie
- Jeśli użytkownik przyznał już Twojej aplikacji wymagane uprawnienia, wywoływana jest funkcja
initializeGlassesFeatures, która inicjuje działanie aplikacji. Ta funkcja jest zdefiniowana jako część aktywności aplikacji w przypadku okularów z AI.
Omówienie procesu żądania uprawnień
Gdy uruchomisz prośbę o uprawnienia za pomocą metody
ProjectedPermissionsResultContract, system zainicjuje skoordynowany proces użytkownika na okularach i telefonie.
Podczas procesu uprawnień aplikacja i użytkownik mogą oczekiwać tych działań:
Na okularach: na urządzeniu wyświetlającym obraz (okularach) pojawia się aktywność, która informuje użytkownika, że aby kontynuować, musi spojrzeć na telefon.
Na telefonie: jednocześnie na urządzeniu hosta (telefonie) uruchamia się aktywność. Na tym ekranie wyświetla się podany przez Ciebie ciąg znaków uzasadnienia i użytkownik może kontynuować lub anulować.
Na telefonie: jeśli użytkownik zaakceptuje uzasadnienie, na telefonie pojawi się zmodyfikowane okno systemowe z prośbą o uprawnienia, które informuje użytkownika, że przyznaje on uprawnienia do okularów (a nie do telefonu), i użytkownik może formalnie przyznać lub odmówić uprawnień.
Otrzymywanie wyniku: gdy użytkownik podejmie ostateczną decyzję, aktywności na telefonie i okularach zostaną zamknięte. Następnie wywoływane jest wywołanie zwrotne
ActivityResultLauncherz mapą zawierającą stan przyznania każdego żądanego uprawnienia.