Запросить разрешения на использование оборудования для очков ИИ

Применимые устройства XR
Данное руководство поможет вам создавать приложения для устройств XR такого типа.
Очки с искусственным интеллектом

Как и на телефоне, доступ к конфиденциальным аппаратным средствам, таким как камера и микрофон, в очках с искусственным интеллектом требует явного согласия пользователя. Эти разрешения считаются специфическими для очков , и ваше приложение должно запрашивать их во время выполнения, даже если у него уже есть соответствующие разрешения на телефоне.

Укажите права доступа в манифесте вашего приложения.

Перед запросом разрешений необходимо указать их в файле манифеста приложения, используя элемент <uses-permission> . Это указание остается неизменным независимо от того, требуется ли разрешение для телефона или для функции, специфичной для очков с искусственным интеллектом, но для аппаратного обеспечения или функциональности, специфичных для очков, его все равно необходимо запрашивать явно.

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

Зарегистрируйте средство запуска с правами доступа

Чтобы запросить разрешения для очков с искусственным интеллектом, сначала используйте ActivityResultLauncher с методом ProjectedPermissionsResultContract для регистрации средства запуска разрешений.

// 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
        }
    }

Основные моменты, касающиеся кода.

Создайте функцию запроса

Далее вам нужно будет создать функцию, которая будет использовать средство запуска запросов разрешений вашего приложения для запроса разрешений у пользователя во время выполнения.

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))
}

Основные моменты, касающиеся кода.

  • Функция requestHardwarePermissions создает объект ProjectedPermissionsRequestParams . Этот объект содержит список разрешений, необходимых вашему приложению, и обоснование для пользователя. Сделайте обоснование ясным и лаконичным, чтобы объяснить, почему вашему приложению необходимы эти разрешения.
  • launch функции запуска в панели запуска инициирует пользовательский поток запроса разрешений .
  • Ваше приложение должно корректно обрабатывать как одобренные, так и отклоненные результаты в функции обратного вызова запуска.

Создайте функцию проверки прав доступа.

Далее вам нужно будет создать функцию, которая будет проверять, предоставил ли пользователь необходимые разрешения вашему приложению.

private fun hasCameraPermission(): Boolean {
    return ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) ==
            PackageManager.PERMISSION_GRANTED
}

Добавьте логику запроса разрешений.

И наконец, создайте логику, которая использует эти функции для проверки и запроса разрешений во время выполнения.

if (hasCameraPermission()) {
    initializeGlassesFeatures()
} else {
    requestHardwarePermissions()
}

Основные моменты, касающиеся кода.

Разберитесь в пользовательском процессе запроса разрешений.

При отправке запроса на разрешение с использованием метода ProjectedPermissionsResultContract система инициирует скоординированный поток действий пользователя как в очках с искусственным интеллектом, так и на телефоне.

В процессе предоставления пользовательских разрешений ваше приложение и пользователь могут ожидать следующего:

  1. На очках с искусственным интеллектом : на проецируемом устройстве (очках) появляется сообщение, предлагающее пользователю посмотреть на свой телефон, чтобы продолжить.

  2. На телефоне : Одновременно на основном устройстве (телефоне) запускается действие. На этом экране отображается предоставленная вами строка обоснования, и пользователю предлагается продолжить или отменить действие.

  3. На телефоне : Если пользователь принимает обоснование, на телефоне появляется модифицированное диалоговое окно разрешения системы Android, сообщающее пользователю, что разрешение предоставляется устройству очков с искусственным интеллектом (а не телефону), и пользователь может официально предоставить или отклонить разрешение.

  4. Получение результата : После того, как пользователь сделает окончательный выбор, действия на телефоне и очках с искусственным интеллектом закрываются. Затем вызывается функция обратного вызова ActivityResultLauncher с картой, содержащей статус предоставления каждого запрошенного разрешения.