Assim como em um smartphone, o acesso a hardware sensível, como a câmera e o microfone em óculos de áudio e de exibição, exige o consentimento explícito do usuário. Essas são consideradas permissões específicas para ó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 para óculos, mas ainda é necessário solicitá-la explicitamente para hardware ou funcionalidade específica para ó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 de áudio e de exibição, 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 de usuários coordenado nos óculos e no smartphone.
Durante o fluxo de usuários de permissões, o app e o usuário podem esperar o seguinte:
Nos óculos: 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 os óculos (não para 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 serão dispensadas. O
ActivityResultLaunchercallback será invocado com um mapa contendo o status concedido para cada permissão solicitada.