Na urządzeniach z systemem Android 11 lub nowszym środowisko Android obsługuje kamery systemowe, które są urządzeniami z kamerami widocznymi tylko dla procesów z uprawnieniem android.permission.SYSTEM_CAMERA
i zwykłymi uprawnieniami do kamery. Uprawnienie android.permission.SYSTEM_CAMERA
, wprowadzone w systemie Android 11, ma poziom ochrony system|signature
. Oznacza to, że tylko aplikacje zainstalowane na partycji systemowej lub podpisane tym samym certyfikatem, co system, mogą otrzymać to uprawnienie. Publiczne aplikacje innych firm nie mają dostępu do kamer systemowych.
Kamery systemowe są przydatne dla producentów urządzeń, którzy chcą zaimplementować funkcje wymagające dostępu do kamery, ale także ograniczone do aplikacji uprzywilejowanych lub aplikacji systemowych.
Ponieważ aplikacje systemowe, którym przyznano uprawnienie android.permission.SYSTEM_CAMERA
, muszą również mieć uprawnienie android.permission.CAMERA
, użytkownicy mogą cofnąć zwykłe uprawnienia CAMERA
, aby uniemożliwić takiej aplikacji dostęp do kamer na urządzeniu.
Realizacja
Aby określone urządzenie z kamerą stało się kamerą systemową, warstwa HAL kamery musi reklamować ANDROID_REQUEST_AVAILABLE_CAPABILITIES_SYSTEM_CAMERA
na swojej liście możliwości.
Aby utworzyć aplikację, która ma dostęp do kamery systemowej, musi ona być umieszczona na białej liście w pliku privapp-permissions.xml
dotyczącym konkretnego urządzenia, który określa aplikacje, którym należy przyznać uprawnienie android.permission.SYSTEM_CAMERA
.
Walidacja
Aby sprawdzić, czy żadna kamera systemowa na urządzeniu nie może zostać wykryta przez publiczną aplikację, uruchom test CTS android.permission.cts.Camera2PermissionTest.testSystemCameraDiscovery
.
Wszystkie testy CTS kamery są przeprowadzane na urządzeniach z kamerą systemową.