На устройствах под управлением Android 11 или выше фреймворк Android поддерживает системные камеры, которые являются устройствами камеры, видимыми только процессам с разрешением android.permission.SYSTEM_CAMERA
и обычными разрешениями камеры. Разрешение android.permission.SYSTEM_CAMERA
, представленное в Android 11, имеет уровень защиты system|signature
. Это означает, что только приложениям, установленным в системном разделе с тем же сертификатом или подписанным тем же сертификатом, что и система, может быть предоставлено это разрешение. Сторонние общедоступные приложения не могут получить доступ к системным камерам.
Системные камеры полезны для производителей устройств, желающих реализовать функции, требующие доступа к камере, но ограниченные привилегированными или системными приложениями.
Поскольку системные приложения, которым предоставлено разрешение android.permission.SYSTEM_CAMERA
, должны также иметь разрешение android.permission.CAMERA
, пользователи могут отозвать обычные разрешения CAMERA
, чтобы запретить такому приложению доступ к камерам на устройстве.
Выполнение
Чтобы сделать определенное устройство камеры системной камерой, HAL камеры должен объявить ANDROID_REQUEST_AVAILABLE_CAPABILITIES_SYSTEM_CAMERA
в своем списке возможностей.
Чтобы создать приложение, имеющее доступ к системной камере, приложение должно быть добавлено в разрешенный список в файле privapp-permissions.xml
для конкретного устройства, в котором указаны приложения, которым должно быть предоставлено разрешение android.permission.SYSTEM_CAMERA
.
Проверка
Чтобы убедиться, что ни одна системная камера на устройстве не может быть обнаружена общедоступным приложением, запустите тест CTS android.permission.cts.Camera2PermissionTest.testSystemCameraDiscovery
.
Все тесты CTS камер выполняются на устройствах системных камер.