Sui dispositivi con Android 11 o versioni successive, il framework Android supporta le fotocamere di sistema, ovvero dispositivi con fotocamera visibili solo ai processi con l'autorizzazione android.permission.SYSTEM_CAMERA
e le autorizzazioni di accesso alla fotocamera standard.
L'autorizzazione android.permission.SYSTEM_CAMERA
, introdotta in Android 11, ha un livello di protezione system|signature
. Ciò significa che solo le app installate nella partizione di sistema con lo stesso certificato del sistema o firmate con lo stesso certificato possono ricevere questa autorizzazione. Le app pubbliche di terze parti non possono accedere alle videocamere di sistema.
Le videocamere di sistema sono utili per i produttori di dispositivi che vogliono implementare funzionalità che richiedono l'accesso a una videocamera, ma sono limitate anche alle app di sistema o privilegiate.
Poiché le app di sistema a cui è stata concessa l'autorizzazione android.permission.SYSTEM_CAMERA
devono disporre anche dell'autorizzazione android.permission.CAMERA
, gli utenti possono scegliere di revocare le normali autorizzazioni CAMERA
per impedire a un'app di questo tipo di accedere alle fotocamere sul dispositivo.
Implementazione
Per fare in modo che un determinato dispositivo della videocamera sia una videocamera di sistema, l'HAL della videocamera deve annunciarla come ANDROID_REQUEST_AVAILABLE_CAPABILITIES_SYSTEM_CAMERA
nell'elenco delle funzionalità.
Per creare un'app che abbia accesso a una fotocamera di sistema, l'app deve essere inserita nella lista consentita nel file privapp-permissions.xml
specifico del dispositivo, che specifica le app a cui deve essere concessa l'autorizzazione android.permission.SYSTEM_CAMERA
.
Convalida
Per verificare che nessuna videocamera di sistema sul dispositivo possa essere rilevata da un'app pubblica, esegui il test CTS android.permission.cts.Camera2PermissionTest.testSystemCameraDiscovery
.
Tutti i test CTS della fotocamera vengono eseguiti sui dispositivi con fotocamera di sistema.