Solicitar permissões de hardware para óculos de áudio e de exibição

Dispositivos XR relevantes
Estas orientações ajudam você a criar experiências para esses tipos de dispositivos XR.
Óculos de áudio e
de exibição

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

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 requestHardwarePermissions cria um ProjectedPermissionsRequestParams objeto. 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 launch na 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 initializeGlassesFeatures será 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:

  1. Nos óculos: uma atividade aparece no dispositivo projetado (óculos), instruindo o usuário a olhar para o smartphone para continuar.

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

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

  4. Receber o resultado: depois que o usuário fizer a escolha final, as atividades no smartphone e nos óculos serão dispensadas. O ActivityResultLauncher callback será invocado com um mapa contendo o status concedido para cada permissão solicitada.