Solicitar permissões de hardware para óculos de IA

Dispositivos XR relevantes
Estas orientações ajudam você a criar experiências para esses tipos de dispositivos XR.
Óculos de IA

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

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

  1. Nos óculos com IA: 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 o dispositivo de óculos com IA (não 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 com IA serão dispensadas. O ActivityResultLauncher callback será invocado com um mapa contendo o status concedido para cada permissão solicitada.