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 kamer na urządzeniu.
Implementacja
Aby określone urządzenie z kamerą było 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 znajdować się 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.testSystemCameraDiscovery
CTS.
Wszystkie testy CTS kamery są przeprowadzane na urządzeniach z kamerą systemową.