Na urządzeniach z Androidem 11 lub nowszym platforma Android obsługuje kamery systemowe, czyli urządzenia, które są widoczne tylko dla procesów z uprawnieniami android.permission.SYSTEM_CAMERA i zwykłymi uprawnieniami do korzystania z aparatu.
Uprawnienie android.permission.SYSTEM_CAMERA, wprowadzone w Androidzie 11, ma poziom ochrony system|signature. Oznacza to, że to uprawnienie można przyznać tylko aplikacjom zainstalowanym na partycji systemowej lub podpisanym tym samym certyfikatem co system. Aplikacje publiczne innych firm nie mają dostępu do kamer systemowych.
Aparaty systemowe są przydatne dla producentów urządzeń, którzy chcą wdrażać funkcje wymagające dostępu do aparatu, ale są one ograniczone do aplikacji systemowych lub aplikacji o podwyższonych uprawnieniach.
Ponieważ aplikacje systemowe, którym przyznano uprawnienie
android.permission.SYSTEM_CAMERA, muszą mieć też uprawnienie
android.permission.CAMERA
, użytkownicy mogą cofnąć zwykłe uprawnienia CAMERA, aby uniemożliwić
takiej aplikacji dostęp do aparatów na urządzeniu.
Implementacja
Aby określone urządzenie z kamerą stało się kamerą systemową, warstwa HAL kamery musi w swojej liście funkcji reklamować ANDROID_REQUEST_AVAILABLE_CAPABILITIES_SYSTEM_CAMERA.
Aby utworzyć aplikację, która ma dostęp do aparatu systemowego, musi ona być na liście dozwolonych w pliku privapp-permissions.xml na danym urządzeniu. Plik ten określa aplikacje, którym należy przyznać uprawnienie android.permission.SYSTEM_CAMERA.
Weryfikacja
Aby sprawdzić, czy żadna kamera systemowa na urządzeniu nie może być wykryta przez aplikację publiczną, uruchom test android.permission.cts.Camera2PermissionTest.testSystemCameraDiscoveryCTS.
Wszystkie testy CTS kamery są przeprowadzane na urządzeniach z kamerą systemową.