Assim como em um smartphone, o acesso a hardware sensível, como a câmera e o microfone em óculos com IA, exige o consentimento explícito do usuário. Essas são consideradas permissões específicas dos óculos, e seu app precisa solicitá-las no momento da execução, mesmo que já tenha as permissões correspondentes no smartphone.
Declarar as permissões no manifesto do app
Antes de solicitar permissões, você precisa declarar elas no manifesto do app
usando o elemento <uses-permission>. Essa declaração permanece a mesma, seja para um smartphone ou um recurso específico de óculos de IA, mas ainda é necessário solicitá-la explicitamente para hardware ou funcionalidade específica dos óculos.
<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>
Registrar a tela de início de permissões
Para solicitar permissões para óculos com IA, primeiro use o
ActivityResultLauncher com o
ProjectedPermissionsResultContract método para registrar a tela de início de permissões.
// 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 } }
Principais pontos sobre o código
- O código cria um
ActivityResultLauncherusando oProjectedPermissionsResultContractmétodo. O callback recebe um mapa de nomes de permissões para o status concedido. - É necessário especificar quais permissões seu app exige, como
Manifest.permission.CAMERAouManifest.permission.RECORD_AUDIO.
Criar a função de solicitação
Em seguida, você vai criar uma função que usa a tela de início de permissões do app para solicitar as permissões do usuário no momento da execução.
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)) }
Principais pontos sobre o código
- A função
requestHardwarePermissionscria umProjectedPermissionsRequestParamsobjeto. Esse objeto agrupa a lista de permissões de que seu app precisa e a justificativa voltada ao usuário. Deixe a justificativa clara e concisa para explicar por que seu app precisa dessas permissões. - Chamar
launchna tela de início aciona o fluxo de usuários de solicitação de permissão. - Seu app precisa processar os resultados concedidos e negados normalmente no callback da tela de início.
Criar a função de verificação de permissões
Em seguida, você vai criar uma função que pode verificar se o usuário concedeu permissões ao seu app.
private fun hasCameraPermission(): Boolean { return ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED }
Adicionar a lógica de solicitação de permissão
Por fim, crie a lógica que usa essas funções para verificar e solicitar as permissões no momento da execução.
if (hasCameraPermission()) { initializeGlassesFeatures() } else { requestHardwarePermissions() }
Principais pontos sobre o código
- Se o usuário já tiver concedido ao seu app as permissões necessárias, a função
initializeGlassesFeaturesserá chamada para inicializar a experiência do app. Essa função é definida como parte da atividade do app para óculos de IA.
Entender o fluxo de usuários de solicitação de permissão
Ao iniciar uma solicitação de permissão usando o
ProjectedPermissionsResultContract método, o sistema inicia um
fluxo do usuário coordenado nos óculos com IA e no smartphone.
Durante o fluxo de usuários de permissões, o app e o usuário podem esperar o seguinte:
Nos óculos com IA: uma atividade aparece no dispositivo projetado (óculos), instruindo o usuário a olhar para o smartphone para continuar.
No smartphone: simultaneamente, uma atividade é iniciada no dispositivo host (smartphone). Essa tela mostra a string de justificativa fornecida e oferece ao usuário a opção de continuar ou cancelar.
No smartphone: se o usuário aceitar a justificativa, uma caixa de diálogo de permissão do sistema Android modificada vai aparecer no smartphone informando que ele está concedendo a permissão para o dispositivo de óculos com IA (não o smartphone), e o usuário pode conceder ou negar formalmente a permissão.
Receber o resultado: depois que o usuário fizer a escolha final, as atividades no smartphone e nos óculos com IA serão dispensadas. O
ActivityResultLaunchercallback será invocado com um mapa contendo o status concedido para cada permissão solicitada.