На устройствах с 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 для камеры выполняются на системных устройствах с камерой.