Sui dispositivi che eseguono Android 11 o versioni successive, il framework Android supporta le fotocamere di sistema, che sono dispositivi con fotocamera visibili solo ai processi con l'autorizzazione android.permission.SYSTEM_CAMERA
e le normali autorizzazioni della fotocamera. L'autorizzazione android.permission.SYSTEM_CAMERA
, introdotta in Android 11, ha un livello di protezione di system|signature
. Ciò significa che solo le app installate nella partizione di sistema con o firmate con lo stesso certificato del sistema possono ottenere questa autorizzazione. Le app pubbliche di terze parti non possono accedere alle telecamere di sistema.
Le fotocamere di sistema sono utili per i produttori di dispositivi che desiderano implementare funzionalità che richiedono l'accesso a una fotocamera ma sono anche limitate alle app privilegiate o di sistema.
Poiché le app di sistema a cui è 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 tale app di accedere alle telecamere del dispositivo.
Implementazione
Per fare di un particolare dispositivo videocamera una videocamera di sistema, la videocamera HAL deve pubblicizzare ANDROID_REQUEST_AVAILABLE_CAPABILITIES_SYSTEM_CAMERA
nell'elenco delle capacità.
Per creare un'app che abbia accesso a una telecamera di sistema, l'app deve essere inserita nella whitelist 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, eseguire il test CTS android.permission.cts.Camera2PermissionTest.testSystemCameraDiscovery
.
Tutti i test CTS della telecamera vengono eseguiti su dispositivi con telecamera di sistema.