Registro delle modifiche del documento di definizione della compatibilità Android

Androide 13

19 ottobre 2022

2. Tipi di dispositivi

  • 2.2.3 Software

    Vedi revisione

    Se le implementazioni del dispositivo portatile non sono in esecuzione in modalità attività di blocco , quando il contenuto viene copiato negli Appunti:

    • [3.8.17/H-1-1] DEVE presentare una conferma all'utente che i dati sono stati copiati negli appunti (ad esempio, una miniatura o un avviso di "Contenuto copiato."). Inoltre, includi qui un'indicazione se i dati degli appunti verranno sincronizzati tra i dispositivi.

3. Software

  • 3.2.3.5. Intenti applicativi condizionali

    Vedi revisione

    Se l' applicazione Impostazioni dell'implementazione del dispositivo implementa una funzionalità divisa , utilizzando l'incorporamento delle attività, allora:

    Se le implementazioni del dispositivo supportano VoiceInteractionService e hanno più di un'applicazione che utilizza questa API installata alla volta, esse:

  • 3.4.1 Compatibilità visualizzazione web

    Vedi revisione

    • [C-1-4] DEVE eseguire il rendering del contenuto fornito o del contenuto dell'URL remoto in un processo distinto dall'applicazione che istanzia WebView. In particolare, il processo di rendering separato DEVE disporre di privilegi inferiori, essere eseguito come ID utente separato, non avere accesso alla directory dei dati dell'app, non avere accesso diretto alla rete e avere accesso solo ai servizi di sistema minimi richiesti su Binder. L'implementazione AOSP di WebView soddisfa questo requisito.

7. Compatibilità hardware

  • 7.4.2 IEEE 802.11 (WiFi)

    Vedi revisione

    Se le implementazioni del dispositivo includono il supporto per la modalità di risparmio energetico Wi-Fi come definito nello standard IEEE 802.11, esse:

  • 7.4.3 Bluetooth

    Vedi revisione

    Se le implementazioni del dispositivo includono il supporto per Bluetooth Low Energy (BLE), esse:

    • [C-3-5] DEVE implementare un timeout dell'indirizzo privato risolvibile (RPA) non superiore a 15 minuti e ruotare l'indirizzo al timeout per proteggere la privacy dell'utente quando il dispositivo utilizza attivamente BLE per la scansione o la pubblicità. Per evitare attacchi temporali, anche gli intervalli di timeout DEVONO essere randomizzati tra 5 e 15 minuti.

  • 7.5.5 Orientamento della telecamera

    Vedi revisione

    Se le implementazioni del dispositivo dispongono di una fotocamera anteriore o posteriore, tali fotocamere:

    • [C-1-1] DEVE essere orientato in modo che la dimensione lunga della telecamera sia allineata con la dimensione lunga dello schermo. Cioè, quando il dispositivo è tenuto in orientamento orizzontale, le fotocamere DEVONO acquisire immagini con orientamento orizzontale. Ciò vale indipendentemente dall'orientamento naturale del dispositivo; vale a dire, si applica ai dispositivi primari orizzontali così come ai dispositivi primari verticali.

    I dispositivi che soddisfano tutti i seguenti criteri sono esenti dal requisito di cui sopra:

    • Il dispositivo implementa schermi a geometria variabile, come display pieghevoli o incernierati.
    • Quando lo stato di piegatura o cardine del dispositivo cambia, il dispositivo passa dall'orientamento verticale primario a quello orizzontale (o viceversa).

9. Compatibilità del modello di sicurezza

  • 9.11 Chiavi e credenziali

    Vedi revisione

    Quando l'implementazione del dispositivo supporta una schermata di blocco sicura, essa:

    • [C-1-6] DEVE supportare IKeymasterDevice 4.0, IKeymasterDevice 4.1, IKeyMintDevice versione 1 o IKeyMintDevice versione 2.

  • 9.17 Framework di virtualizzazione Android

    Vedi revisione

    Se il dispositivo implementa il supporto per le API di Android Virtualization Framework ( android.system.virtualmachine.* ), l'host Android:

    • [C-1-3] NON DEVE modificare, omettere o sostituire le regole neverallow presenti all'interno del sistema/sepolicy fornito nell'Android Open Source Project (AOSP) a monte e la policy DEVE essere compilata con tutte le regole neverallow presenti.

    Se il dispositivo implementa il supporto per le API di Android Virtualization Framework ( android.system.virtualmachine.* ), qualsiasi istanza di macchina virtuale protetta:

    • [C-2-4] NON DEVE modificare, omettere o sostituire le regole neverallow presenti all'interno del sistema/sepolicy/microdroid fornito nell'Android Open Source Project (AOSP) a monte.

    Se il dispositivo implementa il supporto per le API di Android Virtualization Framework, per la gestione delle chiavi:

    • [C-6-2] DEVE eseguire correttamente i DADI, ovvero fornire i valori corretti. Ma potrebbe non essere necessario raggiungere quel livello di dettaglio.

15 agosto 2022

2. Tipi di dispositivi

  • 2.2.1 Hardware : Modifiche ai requisiti hardware come segue.

    • Dispositivi di input:

      Vedi revisione

      Implementazioni di dispositivi portatili:

      • [ 7.2 .3/H-0-5] DEVE chiamare OnBackInvokedCallback.onBackStarted() sulla finestra focalizzata corrente quando inizia il gesto indietro o il pulsante Indietro ( KEYCODE_BACK ) viene premuto GIÙ.
      • [ 7.2 .3/H-0-6] DEVE chiamare OnBackInvokedCallback.onBackInvoked() quando viene eseguito il commit del gesto Indietro o viene rilasciato il pulsante Indietro (SU).
      • [ 7.2 .3/H-0-7] DEVE chiamare OnBackInvokedCallback.onBackCancelled() quando il gesto indietro non viene eseguito o l'evento KEYCODE_BACK viene annullato.

      Se i dispositivi supportano il protocollo WiFi Neighbor Awareness Networking (NAN) dichiarando PackageManager.FEATURE_WIFI_AWARE e Wi-Fi Location (Wi-Fi Round Trip Time — RTT) dichiarando PackageManager.FEATURE_WIFI_RTT , allora:

      • [ 7.4 .2.5/H-1-1] DEVE riportare la portata accuratamente entro +/-1 metro alla larghezza di banda di 160 MHz al 68° percentile (come calcolato con la funzione di distribuzione cumulativa), +/-2 metri alla larghezza di banda di 80 MHz al 68° percentile, +/-4 metri a 40 MHz di larghezza di banda al 68° percentile e +/-8 metri a 20 MHz di larghezza di banda al 68° percentile a distanze di 10 cm, 1 m, 3 m e 5 m, come osservato tramite l' API Android WifiRttManager#startRanging .

      • [ 7.4 .2.5/H-SR] SI RACCOMANDA VIVAMENTE di riportare la portata accuratamente entro +/-1 metro alla larghezza di banda di 160 MHz al 90° percentile (come calcolato con la funzione di distribuzione cumulativa), +/-2 metri a 80 MHz larghezza di banda al 90° percentile, +/-4 metri con larghezza di banda di 40 MHz al 90° percentile e +/-8 metri con larghezza di banda di 20 MHz al 90° percentile a distanze di 10 cm, come osservato tramite l' API Android WifiRttManager#startRanging .

      È VIVAMENTE RACCOMANDATO seguire le fasi di impostazione della misurazione specificate in Requisiti di calibrazione della presenza .

    • Latenza audio:

      Vedi revisione

      Se le implementazioni dei dispositivi portatili dichiarano android.hardware.audio.output e android.hardware.microphone , esse:

      • [ 5.6 /H-1-1] DEVE avere una latenza media continua di andata e ritorno di 500 800 millisecondi o meno su 5 misurazioni, con una deviazione assoluta media inferiore a 50 100 ms, sui seguenti percorsi dati: "dall'altoparlante al microfono", adattatore loopback da 3,5 mm (se supportato), loopback USB (se supportato). almeno un percorso supportato.

      • [ 5.6 /H-1-1] DEVE avere una latenza media Tap-to-tone di 500 millisecondi o meno su almeno 5 misurazioni sul percorso dati dall'altoparlante al microfono.

    • Input tattili:

      Vedi revisione

      Se le implementazioni dei dispositivi portatili includono almeno un attuatore tattile, esse:

      • [ 7.10 /H]* NON DOVREBBE utilizzare un attuatore aptico (vibratore) a massa rotante eccentrica (ERM).
      • [ 7.10 /H]* DOVREBBE posizionare il posizionamento dell'attuatore vicino al punto in cui il dispositivo viene generalmente tenuto o toccato dalle mani.
      • [ 7.10 /H]* DOVREBBE implementare tutte le costanti pubbliche per gli aptici chiari in android.view.HapticFeedbackConstants ovvero (CLOCK_TICK, CONTEXT_CLICK, KEYBOARD_PRESS, KEYBOARD_RELEASE, KEYBOARD_TAP, LONG_PRESS, TEXT_HANDLE_MOVE, VIRTUAL_KEY, VIRTUAL_KEY_RELEASE, CONFIRM, REJECT, GESTURE_START) e GESTURE_START.
      • [ 7.10 /H]* DOVREBBE implementare tutte le costanti pubbliche per aptici chiari in android.os.VibrationEffect vale a dire (EFFECT_TICK, EFFECT_CLICK, EFFECT_HEAVY_CLICK e EFFECT_DOUBLE_CLICK) e tutte le costanti PRIMITIVE_* pubbliche possibili per aptici ricchi in android.os.VibrationEffect.Composition vale a dire (PRIMITIVE_CLICK e PRIMITIVE_TICK) (CLICK, TICK, LOW_TICK, QUICK_FALL, QUICK_RISE, SLOW_RISE, SPIN, THUD). Alcune di queste primitive, come LOW_TICK e SPIN, possono essere realizzabili solo se il vibratore può supportare frequenze relativamente basse.

      • [ 7.10 /H]* DOVREBBE usare queste mappature di costanti tattili collegate .

      Se le implementazioni dei dispositivi portatili includono almeno un attuatore a risonanza lineare, esse:

      • [ 7.10 /H]* DOVREBBE spostare l'attuatore tattile sull'asse X (sinistra-destra) dell'orientamento verticale.

      • [ 7.10 /H]* DOVREBBE verificare e aggiornare, se necessario, la configurazione di fallback per le primitive non supportate come descritto nella guida all'implementazione per le costanti.

      • [7.10/H]* DOVREBBE fornire supporto di fallback per mitigare il rischio di fallimento come descritto qui .

  • 2.2.3 Software :

    • Auth Trivial Device Controls:

      Vedi revisione

      • [ 3.8 .16/H-1-5] DEVE fornire all'utente la possibilità di rifiutare esplicitamente i controlli del dispositivo auth-banale designati dall'app dai controlli registrati dalle applicazioni di terze parti tramite ControlsProviderService e l'API Control Control.isAuthRequired .

    • Notifiche MediaStyle:

      Vedi revisione

      Se le implementazioni dei dispositivi portatili supportano le notifiche MediaStyle , esse:

      • [3.8.3.1/H-1-SR] È VIVAMENTE RACCOMANDATO fornire un'accessibilità utente (ad es. "commutatore di output") accessibile dall'interfaccia utente del sistema che consenta agli utenti di passare da percorsi multimediali disponibili appropriati (ad es. dispositivi Bluetooth e percorsi forniti a MediaRouter2Manager ) quando un'app pubblica una notifica MediaStyle con un token MediaSession .

  • 2.2.4 Prestazioni e potenza : nuovo requisito per le app che eseguono servizi in primo piano.

    Vedi revisione

    Implementazioni di dispositivi portatili:

    • [ 8.5 /H-0-1] DEVE fornire all'utente nel menu Impostazioni la possibilità di arrestare un'app che sta eseguendo un servizio in primo piano e visualizzare tutte le app che hanno servizi in primo piano attivi e la durata di ciascuno di questi servizi da quando avviato come descritto nel documento SDK .
      • Alcune app POTREBBERO essere esentate dall'essere interrotte o dall'essere elencate in tali offerte per gli utenti come descritto nel documento SDK .

  • 2.2.7.1 Supporti : Aggiornamenti alla sezione Supporti dei requisiti del palmare come segue:

    Vedi revisione

    Se le implementazioni del dispositivo portatile restituiscono android.os.Build.VERSION_CODES.T per android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS , allora:

    • [5.1/H-1-1] DEVE pubblicizzare il numero massimo di sessioni di decoder video hardware che possono essere eseguite contemporaneamente in qualsiasi combinazione di codec tramite i CodecCapabilities.getMaxSupportedInstances() e VideoCapabilities.getSupportedPerformancePoints() .
    • [5.1/H-1-2] DEVE supportare 6 istanze di sessioni di decoder video hardware (AVC, HEVC, VP9, ​​AV1 o successive) in qualsiasi combinazione di codec in esecuzione contemporaneamente a una risoluzione di 1080p a 30 fps.
    • [5.1/H-1-3] DEVE pubblicizzare il numero massimo di sessioni di codifica video hardware che possono essere eseguite contemporaneamente in qualsiasi combinazione di codec tramite i CodecCapabilities.getMaxSupportedInstances() e VideoCapabilities.getSupportedPerformancePoints() .
    • [5.1/H-1-4] DEVE supportare 6 istanze di sessioni di codifica video hardware (AVC, HEVC, VP9, ​​AV1 o successive) in qualsiasi combinazione di codec in esecuzione contemporaneamente a una risoluzione di 1080p a 30 fps.
    • [5.1/H-1-5] DEVE pubblicizzare il numero massimo di sessioni di codifica e decodifica video hardware che possono essere eseguite contemporaneamente in qualsiasi combinazione di codec tramite i CodecCapabilities.getMaxSupportedInstances() e VideoCapabilities.getSupportedPerformancePoints() .
    • [5.1/H-1-6] DEVE supportare 6 istanze di decoder video hardware e sessioni di codifica video hardware (AVC, HEVC, VP9, ​​AV1 o successive) in qualsiasi combinazione di codec in esecuzione contemporaneamente a una risoluzione di 1080p@30fps.
    • [5.1/H-1-7] DEVE avere una latenza di inizializzazione del codec di 40 ms o inferiore per una sessione di codifica video a 1080p o inferiore per tutti i codificatori video hardware sotto carico. Il caricamento qui è definito come una sessione di transcodifica simultanea di soli video da 1080p a 720p che utilizza codec video hardware insieme all'inizializzazione della registrazione audio-video a 1080p.
    • [5.1/H-1-8] DEVE avere una latenza di inizializzazione del codec di 30 ms o inferiore per una sessione di codifica audio con bitrate pari o inferiore a 128 kbps per tutti i codificatori audio sotto carico. Il caricamento qui è definito come una sessione di transcodifica simultanea di soli video da 1080p a 720p che utilizza codec video hardware insieme all'inizializzazione della registrazione audio-video a 1080p.
    • [5.1/H-1-9] DEVE supportare 2 istanze di sessioni di decoder video hardware sicure (AVC, HEVC, VP9, ​​AV1 o successive) in qualsiasi combinazione di codec in esecuzione contemporaneamente a una risoluzione di 1080p a 30 fps.
    • [5.1/H-1-10] DEVE supportare 3 istanze di sessioni di decodifica video hardware non sicure insieme a 1 istanza di sessione di decodifica video hardware sicura (4 istanze in totale) (AVC, HEVC, VP9, ​​AV1 o successivo) in qualsiasi codec combinazione in esecuzione contemporaneamente a una risoluzione di 1080p a 30 fps.
    • [5.1/ H-1-11] DEVE supportare un decoder sicuro per ogni decoder hardware AVC, HEVC, VP9 o AV1 sul dispositivo.
    • [5.1/H-1-12] DEVE avere una latenza di inizializzazione del decodificatore video di 40 ms o inferiore.
    • [5.1/H-1-13] DEVE avere una latenza di inizializzazione del decodificatore audio di 30 ms o inferiore.
    • [5.1/H-1-14] DEVE supportare il decoder hardware AV1 Main 10, Level 4.1.
    • [5.1/H-SR] Sono fortemente consigliati per supportare la grana della pellicola per il decodificatore hardware AV1.
    • [5.1/H-1-15] DEVE avere almeno 1 decoder video hardware che supporti 4K60.
    • [5.1/H-1-16] DEVE avere almeno 1 codificatore video hardware che supporti 4K60.
    • [5.3/H-1-1] NON DEVE perdere più di 1 fotogramma in 10 secondi (vale a dire meno dello 0,167 percento di perdita di fotogrammi) per una sessione video a 1080p 60 fps sotto carico. Il caricamento è definito come una sessione simultanea di transcodifica solo video da 1080p a 720p utilizzando codec video hardware, nonché una riproduzione audio AAC a 128 kbps.
    • [5.3/H-1-2] NON DEVE perdere più di 1 fotogramma in 10 secondi durante una modifica della risoluzione video in una sessione video a 60 fps sotto carico. Il caricamento è definito come una sessione simultanea di transcodifica solo video da 1080p a 720p utilizzando codec video hardware, nonché una riproduzione audio AAC a 128 kbps.
    • [5.6/H-1-1] DEVE avere una latenza tap-to-tone di 80 millisecondi o meno utilizzando il test tap-to-tone OboeTester o il test tap-to-tone CTS Verifier.
    • [5.6/H-1-2] DEVE avere una latenza audio di andata e ritorno di 80 millisecondi o meno su almeno un percorso dati supportato.
    • [5.6/H-1-3] DEVE supportare >=audio a 24 bit per l'uscita stereo su jack audio da 3,5 mm se presente e su audio USB se supportato attraverso l'intero percorso dati per configurazioni a bassa latenza e streaming. Per la configurazione a bassa latenza, AAudio deve essere usato dall'app in modalità di callback a bassa latenza. Per la configurazione dello streaming, l'app dovrebbe utilizzare un Java AudioTrack. In entrambe le configurazioni a bassa latenza e streaming, il sink di output HAL deve accettare AUDIO_FORMAT_PCM_24_BIT , AUDIO_FORMAT_PCM_24_BIT_PACKED , AUDIO_FORMAT_PCM_32_BIT o AUDIO_FORMAT_PCM_FLOAT per il formato di output di destinazione.
    • [5.6/H-1-4] DEVE supportare dispositivi audio USB >=4 canali (utilizzato dai controller DJ per l'anteprima dei brani).
    • [5.6/H-1-5] DEVE supportare dispositivi MIDI compatibili con la classe e dichiarare il flag della funzionalità MIDI.
    • [5.7/H-1-2] DEVE supportare MediaDrm.SECURITY_LEVEL_HW_SECURE_ALL con le seguenti capacità di decrittazione dei contenuti.
    Dimensione minima del campione 4 MB
    Numero minimo di sottocampioni - H264 o HEVC 32
    Numero minimo di sottocampioni - VP9 9
    Numero minimo di sottocampioni - AV1 288
    Dimensione minima del buffer del sottocampione 1 MB
    Dimensione minima del buffer crittografico generico 500 KiB
    Numero minimo di sessioni simultanee 30
    Numero minimo di chiavi per sessione 20
    Numero totale minimo di chiavi (tutte le sessioni) 80
    Numero totale minimo di chiavi DRM (tutte le sessioni) 6
    Dimensione del messaggio 16 KiB
    Fotogrammi decifrati al secondo 60 fps

  • 2.2.7.2 Videocamera : Aggiornamenti ai requisiti per la videocamera della classe Media Performance.

    Vedi revisione

    Se le implementazioni del dispositivo portatile restituiscono android.os.Build.VERSION_CODES.T per android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS , allora:

    • [7.5/H-1-1] DEVE disporre di una fotocamera posteriore principale con una risoluzione di almeno 12 megapixel che supporti l'acquisizione di video a 4k@30fps. La fotocamera posteriore principale è la fotocamera posteriore con l'ID della fotocamera più basso.
    • [7.5/H-1-2] DEVE avere una fotocamera frontale principale con una risoluzione di almeno 5 megapixel e supportare l'acquisizione di video a 1080p@30fps. La fotocamera frontale principale è la fotocamera frontale con l'ID della fotocamera più basso.
    • [7.5/H-1-3] DEVE supportare la proprietà android.info.supportedHardwareLevel come FULL o superiore per entrambe le fotocamere principali.
    • [7.5/H-1-4] DEVE supportare CameraMetadata.SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME per entrambe le fotocamere principali.
    • [7.5/H-1-5] DEVE avere una latenza di acquisizione JPEG della telecamera2 < 1000 ms per una risoluzione di 1080p misurata dal PerformanceTest della telecamera CTS in condizioni di illuminazione ITS (3000K) per entrambe le telecamere principali.
    • [7.5/H-1-6] DEVE avere una latenza di avvio della videocamera 2 (videocamera aperta al primo fotogramma di anteprima) < 500 ms misurata dal PerformanceTest della videocamera CTS in condizioni di illuminazione ITS (3000 K) per entrambe le videocamere principali.
    • [7.5/H-1-8] DEVE supportare CameraMetadata.REQUEST_AVAILABLE_CAPABILITIES_RAW e android.graphics.ImageFormat.RAW_SENSOR per la fotocamera posteriore principale.
    • [7.5/H-1-9] DEVE avere una fotocamera principale posteriore che supporti 720p o 1080p a 240 fps.
    • [7.5/H-1-10] DEVE avere ZOOM_RATIO minimo < 1.0 per le fotocamere principali se è presente una fotocamera RGB ultrawide rivolta nella stessa direzione.
    • [7.5/H-1-11] DEVE implementare lo streaming front-back simultaneo sulle telecamere principali.
    • [7.5/H-1-12] DEVE supportare CONTROL_VIDEO_STABILIZATION_MODE_PREVIEW_STABILIZATION sia per la fotocamera principale anteriore che per quella posteriore principale.
    • [7.5/H-1-13] DEVE supportare la funzionalità LOGICAL_MULTI_CAMERA per le telecamere primarie se sono presenti più di 1 telecamere RGB rivolte nella stessa direzione.
    • [7.5/H-1-14] DEVE supportare la funzionalità STREAM_USE_CASE sia per la fotocamera principale anteriore che per quella posteriore principale.

  • 2.2.7.3 Hardware : Aggiornamenti ai requisiti della Media Performance Class per l'hardware.

    Vedi revisione

    Se le implementazioni del dispositivo portatile restituiscono android.os.Build.VERSION_CODES.T per android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS , allora:

    • [7.1.1.1/H-2-1] DEVE avere una risoluzione dello schermo di almeno 1080p.
    • [7.1.1.3/H-2-1] DEVE avere una densità dello schermo di almeno 400 dpi.
    • [7.6.1/H-2-1] DEVE avere almeno 8 GB di memoria fisica.

  • 2.2.7.4 Prestazioni : aggiornamenti alla classe di prestazioni dei media per le prestazioni.

    Vedi revisione

    Se le implementazioni del dispositivo portatile restituiscono android.os.Build.VERSION_CODES.T per android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS , allora:

    • [8.2/H-1-1] DEVE garantire prestazioni di scrittura sequenziale di almeno 125 MB/s.
    • [8.2/H-1-2] DEVE garantire prestazioni in scrittura casuale di almeno 10 MB/s.
    • [8.2/H-1-3] DEVE garantire una prestazione di lettura sequenziale di almeno 250 MB/s.
    • [8.2/H-1-4] DEVE garantire una prestazione in lettura casuale di almeno 40 MB/s.

  • 2.5.1 Hardware : Aggiornamenti ai requisiti dell'accelerometro a 3 assi e del giroscopio a 3 assi, nonché ai requisiti della telecamera per la visione esterna.

    Vedi revisione

    Implementazioni di dispositivi automobilistici:

    • [ 7.3 .1/A-0-4] DEVE essere conforme al sistema di coordinate del sensore per auto Android .
    • [ 7.3 /A-SR] È FORTEMENTE_RACCOMANDATO includere un accelerometro a 3 assi e un giroscopio a 3 assi.
    • [ 7.3 /A-SR] È FORTEMENTE_CONSIGLIATO per implementare e segnalare il sensore TYPE_HEADING .

    Se le implementazioni di dispositivi automobilistici includono un accelerometro, esse:

    • [ 7.3 .1/A-1-1] DEVE essere in grado di segnalare eventi fino a una frequenza di almeno 100 Hz.

    Se le implementazioni del dispositivo includono un accelerometro a 3 assi, esse:

    • [ 7.3 .1/A-SR] E' VIVAMENTE RACCOMANDATO implementare il sensore composito per accelerometro ad assi limitati.

    Se le implementazioni di dispositivi automobilistici includono un accelerometro con meno di 3 assi, esse:

    • [ 7.3 .1/A-1-3] DEVE implementare e segnalare il sensore TYPE_ACCELEROMETER_LIMITED_AXES .
    • [ 7.3 .1/A-1-4] DEVE implementare e segnalare il sensore TYPE_ACCELEROMETER_LIMITED_AXES_UNCALIBRATED .

    Se le implementazioni di dispositivi automobilistici includono un giroscopio, esse:

    • [ 7.3 .4/A-2-1] DEVE essere in grado di segnalare eventi fino ad una frequenza di almeno 100 Hz.
    • [ 7.3.4 /A-2-3] DEVE essere in grado di misurare cambiamenti di orientamento fino a 250 gradi al secondo.
    • [ 7.3 .4/A-SR] È FORTEMENTE RACCOMANDATO configurare l'intervallo di misurazione del giroscopio a +/-250 dps per massimizzare la risoluzione possibile.

    Se le implementazioni di dispositivi automobilistici includono un giroscopio a 3 assi, esse:

    • [ 7.3 .4/A-SR] È VIVAMENTE RACCOMANDATO implementare il sensore composito per giroscopio ad assi limitati.

    Se le implementazioni di dispositivi automobilistici includono un giroscopio con meno di 3 assi, esse:

    • [ 7.3 .4/A-4-1] DEVE implementare e segnalare il sensore TYPE_GYROSCOPE_LIMITED_AXES .
    • [ 7.3 .4/A-4-2] DEVE implementare e segnalare il sensore TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATED .

    Se le implementazioni di dispositivi automobilistici includono un sensore TYPE_HEADING , esse:

    • [ 7.3 .4/A-4-3] DEVE essere in grado di riportare eventi fino ad una frequenza di almeno 1 Hz.
    • [ 7.3 .4/A-SR] FORTEMENTE_RACCOMANDATO per segnalare eventi fino ad una frequenza di almeno 10 Hz.
    • DOVREBBE essere riferito al vero nord.
    • DOVREBBE essere disponibile anche quando il veicolo è fermo.
    • DOVREBBE avere una risoluzione di almeno 1 grado.

    Una telecamera per la visione esterna è una telecamera che riprende scene al di fuori dell'implementazione del dispositivo, come la telecamera per la retromarcia una dashcam .

    Se le implementazioni di dispositivi automobilistici includono una videocamera per la visualizzazione esterna, per tale videocamera:

    • [ 7.5 .5/A-SR] È VIVAMENTE RACCOMANDATO orientarsi in modo che la dimensione lunga della fotocamera sia allineata con l'orizzonte.

    • PUÒ avere la messa a fuoco automatica hardware o la messa a fuoco automatica software implementata nel driver della fotocamera.

    Se le implementazioni di dispositivi automobilistici includono una o più videocamere per la visualizzazione esterna e caricano il servizio Sistema di visualizzazione esterna (EVS), per tale videocamera:

    • [ 7.5 /A-2-1] NON DEVE ruotare o specchiare orizzontalmente l'anteprima della telecamera.

    Implementazioni di dispositivi automobilistici:

    • PUÒ includere una o più fotocamere disponibili per applicazioni di terze parti.

    Se le implementazioni di dispositivi automobilistici includono almeno una fotocamera e la rendono disponibile ad applicazioni di terze parti, queste:

    • [ 7.5 /A-3-1] DEVE riportare il flag di funzionalità android.hardware.camera.any .
    • [ 7.5 /A-3-2] NON DEVE dichiarare la fotocamera come fotocamera di sistema .
    • MAY supporta le telecamere esterne descritte nella sezione 7.5.3 .
    • MAGGIO include funzioni (come la messa a fuoco automatica, ecc.) disponibili per le fotocamere posteriori come descritto nella sezione 7.5.1 .

  • 2.5.5 Modello di sicurezza : nuovi requisiti per le autorizzazioni delle telecamere per i dispositivi automobilistici.

    Vedi revisione

    Se le implementazioni dei dispositivi Automotive dichiarano android.hardware.camera.any , allora:

    • [ 9.8.2 /A-2-1] DEVE visualizzare l'indicatore della videocamera quando un'app accede ai dati della videocamera in diretta, ma non quando l'accesso alla videocamera è consentito solo da app che detengono i ruoli indicati nella Sezione 9.1 Autorizzazioni con CDD identificatore [C-3-X].

    • [ 9.8.2 /A-2-2] Non DEVE nascondere l'indicatore della fotocamera per le app di sistema che hanno interfacce utente visibili o interazione diretta con l'utente.

  • 2.6.1 Requisiti del tablet — Hardware : aggiornamento ai requisiti delle dimensioni dello schermo del tablet.

    Vedi revisione

    Un dispositivo Tablet Android fa riferimento a un'implementazione di un dispositivo Android che in genere soddisfa tutti i seguenti criteri:

    • Ha una dimensione del display superiore a 7" e inferiore a 18", misurata in diagonale.

    Dimensione dello schermo

    • [ 7.1 .1.1/Tab-0-1] DEVE avere uno schermo compreso tra 7 e 18 pollici.

3. Software

  • 3.2.2 Parametri di compilazione : Caratteri ASCII aggiornati in getSerial() .

    Vedi revisione

    • [C-0-1] Per fornire valori coerenti e significativi tra le implementazioni dei dispositivi, la tabella seguente include ulteriori restrizioni sui formati di questi valori a cui le implementazioni dei dispositivi DEVONO conformarsi.
    Parametro Particolari
    getSerial() DEVE (essere o restituire) un numero di serie dell'hardware, che DEVE essere disponibile e univoco tra i dispositivi con lo stesso MODELLO e PRODUTTORE. Il valore di questo campo DEVE essere codificabile come ASCII a 7 bit e corrispondere all'espressione regolare "^[a-zA-Z0-9]+$" .

  • 3.2.3.5 Intenti dell'applicazione condizionale : aggiornamento ai requisiti per gli intenti dell'applicazione condizionale.

    Vedi revisione

    Se le implementazioni del dispositivo includono un display di grandi dimensioni (generalmente con larghezza e altezza del display di 600 dp+) e supportano la funzionalità divisa , allora:

  • 3.5.1 Limitazione dell'applicazione : Aggiornamenti alle restrizioni dell'applicazione.

    Vedi revisione

    Se le implementazioni del dispositivo implementano un meccanismo proprietario per limitare le app (ad esempio modificando o limitando i comportamenti API descritti nell'SDK) e tale meccanismo è più restrittivo del bucket di standby delle app con restrizioni , esse:

    • [C-1-1] DEVE consentire all'utente di visualizzare l'elenco delle app con restrizioni.
    • [C-1-2] DEVE fornire all'utente la possibilità di attivare/disattivare tutte queste restrizioni proprietarie su ciascuna app.
    • [C-1-3] NON DEVE applicare automaticamente queste restrizioni proprietarie senza prove di un comportamento di scarsa integrità del sistema, ma PUÒ applicare le restrizioni sulle app al rilevamento di un comportamento di scarsa integrità del sistema come wakelock bloccati, servizi di lunga durata e altri criteri. I criteri POSSONO essere determinati dagli implementatori del dispositivo, ma DEVONO essere correlati all'impatto dell'app sull'integrità del sistema. Altri criteri che non sono puramente correlati alla salute del sistema, come la mancanza di popolarità dell'app sul mercato, NON DEVONO essere utilizzati come criteri.
    • [C-1-4] Non DEVE applicare automaticamente queste restrizioni proprietarie per le app quando un utente ha disattivato manualmente le restrizioni delle app e PUÒ suggerire all'utente di applicare queste restrizioni proprietarie.
    • [C-1-5] DEVE informare gli utenti se queste restrizioni proprietarie vengono applicate automaticamente a un'app. Tali informazioni DEVONO essere fornite nel periodo di 24 ore che precede l'applicazione di queste restrizioni proprietarie.

    • [C-1-6] DEVE restituire true per il metodo ActivityManager.isBackgroundRestricted() per qualsiasi chiamata API da un'app.

    • [C-1-7] NON DEVE limitare l'app in primo piano utilizzata in modo esplicito dall'utente.

    • [C-1-8] DEVE sospendere queste restrizioni proprietarie su un'app ogni volta che un utente inizia a utilizzare esplicitamente l'app, rendendola la prima applicazione in primo piano.

    • [C-1-9] DEVE segnalare tutti questi eventi di restrizioni proprietarie tramite UsageStats.

    • [C-1-10] DEVE fornire un documento o un sito Web pubblico e chiaro che descriva come vengono applicate le restrizioni proprietarie. Questo documento o sito web DEVE essere collegabile dai documenti Android SDK e DEVE includere:

      • Condizioni di attivazione delle restrizioni proprietarie.
      • Cosa e come un'app può essere limitata.
      • In che modo un'app può essere esentata da tali restrizioni.
      • In che modo un'app può richiedere un'esenzione dalle restrizioni proprietarie, se supporta tale esenzione per le app che l'utente può installare.

    Se un'app è preinstallata sul dispositivo e non è mai stata utilizzata esplicitamente da un utente per più di 30 giorni, le [C-1-3] [C-1-5] sono esentate.

  • 3.8.1 Launcher (schermata iniziale) : aggiornamenti al supporto per monochrome/adaptive-icon .

    Vedi revisione

    Se le implementazioni del dispositivo supportano le icone monocromatiche , queste icone:

    • [C-6-1] DEVONO essere utilizzati solo quando un utente li abilita esplicitamente (ad esempio tramite Impostazioni o menu di selezione sfondi).

  • 3.8.2 Widget : aggiornamento alla presenza di widget di app di terze parti nel Launcher.

    Vedi revisione

    Se le implementazioni del dispositivo supportano i widget di app di terze parti, esse:

    • [C-1-2] DEVE includere il supporto integrato per gli AppWidget ed esporre le funzionalità dell'interfaccia utente per aggiungere, configurare, visualizzare e rimuovere gli AppWidget direttamente all'interno del Launcher.

  • 3.8.3.1 Presentazione delle notifiche : Chiarimento della definizione di avvisi di notifica.

    Vedi revisione

    Le notifiche di avvertimento sono notifiche che vengono presentate all'utente non appena arrivano indipendentemente dalla superficie su cui si trova l'utente.

  • 3.8.3.3 DND (Non disturbare) / Modalità prioritaria : aggiornamento per includere la modalità prioritaria nei requisiti DND (Non disturbare).

    Vedi revisione

    3.8.3.3. DND (Non disturbare) / Modalità prioritaria

    Se le implementazioni del dispositivo supportano la funzione Non disturbare (chiamata anche modalità prioritaria), esse:

  • 3.8.6 Temi : nuovi requisiti per tavolozze tonali di colori dinamici.

    Vedi revisione

    Se le implementazioni del dispositivo includono uno schermo o un output video, esse:

    • [C-1-4] DEVE generare tavolozze tonali di colori dinamici come specificato nella documentazione AOSP di Settings.THEME_CUSTOMIZATION_OVERLAY_PACKAGES (vedi android.theme.customization.system_palette e android.theme.customization.theme_style ).

    • [C-1-5] DEVE generare tavolozze tonali di colori dinamici utilizzando gli stili del tema dei colori enumerati nella documentazione Settings.THEME_CUSTOMIZATION_OVERLAY_PACKAGES (vedere android.theme.customization.theme_styles ), vale a dire TONAL_SPOT , VIBRANT , EXPRESSIVE , SPRITZ , RAINBOW , FRUIT_SALAD .

      "Colore sorgente" utilizzato per generare tavolozze tonali di colori dinamici quando inviato con android.theme.customization.system_palette (come documentato in Settings.THEME_CUSTOMIZATION_OVERLAY_PACKAGES ).

    • [C-1-6] DEVE avere un valore cromatico CAM16 di 5 o superiore.

      • DOVREBBE essere derivato dallo sfondo tramite com.android.systemui.monet.ColorScheme#getSeedColors , che fornisce più colori di origine validi tra cui sceglierne uno.

      • DOVREBBE utilizzare il valore 0xFF1B6EF3 , se nessuno dei colori forniti soddisfa i requisiti del colore di origine di cui sopra.

  • 3.8.17 Appunti : Aggiunta una nuova sezione dei requisiti per il contenuto negli Appunti.

    Vedi revisione

    3.8.17. Appunti

    Implementazioni del dispositivo:

    • [C-0-1] NON DEVE inviare i dati degli appunti a nessun componente, attività, servizio o attraverso qualsiasi connessione di rete, senza un'azione esplicita dell'utente (ad esempio, premendo un pulsante sull'overlay), ad eccezione dei servizi menzionati in 9.8.6 Contenuto Acquisizione e ricerca app .

    Se le implementazioni del dispositivo generano un'anteprima visibile all'utente quando il contenuto viene copiato negli Appunti per qualsiasi elemento ClipData in cui ClipData.getDescription().getExtras() contiene android.content.extra.IS_SENSITIVE , esse:

    • [C-1-1] DEVE redigere l'anteprima visibile all'utente

    L'implementazione di riferimento AOSP soddisfa questi requisiti degli Appunti.

  • 3.9.1.1 Provisioning del proprietario del dispositivo : aggiornamenti ai requisiti di provisioning del proprietario del dispositivo.

    Vedi revisione

    Se le implementazioni del dispositivo dichiarano android.software.device_admin , esse:

    • [C-1-1] DEVE supportare la registrazione di un Device Policy Client (DPC) come app Device Owner come descritto di seguito:
      • Quando l'implementazione del dispositivo non ha utenti né dati utente configurati, essa:
        • [C-1-5] DEVE registrare l'applicazione DPC come app Device Owner o consentire all'app DPC di scegliere se diventare un proprietario del dispositivo o un proprietario del profilo, se il dispositivo dichiara il supporto NFC (Near-Field Communications) tramite la funzione contrassegna android.hardware.nfc e riceve un messaggio NFC contenente un record con tipo MIME MIME_TYPE_PROVISIONING_NFC .
        • [C-1-8] DEVE inviare l'intento ACTION_GET_PROVISIONING_MODE dopo l'attivazione del provisioning del proprietario del dispositivo in modo che l'app DPC possa scegliere se diventare un proprietario del dispositivo o un proprietario del profilo, a seconda dei valori di android.app.extra.PROVISIONING_ALLOWED_PROVISIONING_MODES , a meno che it can be determined from context that there is only one valid option. (such as for NFC based provisioning where Profile Owner provisioning is not supported).
        • [C-1-9] MUST send the ACTION_ADMIN_POLICY_COMPLIANCE intent to the Device Owner app if a Device Owner is established during provisioning regardless of the provisioning method used. The user must not be able to proceed in the Setup Wizard until the Device Owner app finishes.
      • When the device implementation has users or user data, it:
        • [C-1-7] MUST not enroll any DPC application as the Device Owner App any more.
    • [C-1-2] MUST show an appropriate disclosure notice (such as referenced in AOSP ) and obtain affirmative consent from the end user prior to an app being set as Device Owner, unless the device is programmatically configured for retail demo mode prior to on-screen, end-user interaction. require some affirmative action before or during the provisioning process to consent to an app being set as Device Owner. Consent can be via user action or by some programmatic means but appropriate disclosure notice (as referenced in AOSP) MUST be shown before device owner provisioning is initiated. Also, the programmatic device owner consent mechanism used (by enterprises) for device owner provisioning MUST NOT interfere with the Out-Of-Box Experience for non-enterprise use.
    • [C-1-3] MUST NOT hard code the consent or prevent the use of other device owner apps.

    If device implementations declare android.software.device_admin , but also include a proprietary Device Owner device management solution and provide a mechanism to promote an application configured in their solution as a "Device Owner equivalent" to the standard "Device Owner" as recognized by the standard Android DevicePolicyManager APIs, they:

    • [C-2-1] MUST have a process in place to verify that the specific app being promoted belongs to a legitimate enterprise device management solution and has been configured in the proprietary solution to have the rights equivalent as a "Device Owner".
    • [C-2-2] MUST show the same AOSP Device Owner consent disclosure as the flow initiated by android.app.action.PROVISION_MANAGED_DEVICE prior to enrolling the DPC application as "Device Owner".
    • [C-2-3] MUST NOT hard code the consent or prevent the use of other device owner apps.
    • MAY have user data on the device prior to enrolling the DPC application as "Device Owner".

  • 3.9.4 Device Management Role Requirements : Added a section for Device Management Role Requirements.

    See revision

    3.9.4 Device Policy Management Role Requirements

    If device implementations report android.software.device_admin or android.software.managed_users , then they:

    • [C-1-1] MUST support the device policy management role as defined in section 9.1 . The application that holds the device policy management role MAY be defined by setting config_devicePolicyManagement to the package name. The package name MUST be followed by : and the signing certificate unless the application is preloaded.

    If a package name is not defined for config_devicePolicyManagement as described above:

    If a package name is defined for config_devicePolicyManagement as described above:

    • [C-3-1] The application MUST be installed on all profiles for a user .
    • [C-3-2] Device implementations MAY define an application that updates the device policy management role holder before provisioning by setting config_devicePolicyManagementUpdater .

    If a package name is defined for config_devicePolicyManagementUpdater as described above:

    • [C-4-1] The application MUST be preinstalled on the device.
    • [C-4-2] The application MUST implement an intent filter which resolves android.app.action.UPDATE_DEVICE_POLICY_MANAGEMENT_ROLE_HOLDER .

  • 3.18 Contacts : Adding information for new contacts.

    See revision

    Default account for new contacts: Contacts Provider provides APIs to manage the setting of the default account when creating a new contact.

    If device implementations preload a contacts app, then the pre-loaded contacts app:

    • [C-2-1] MUST handle the intent ContactsContract.Settings.ACTION_SET_DEFAULT_ACCOUNT to launch a UI for account selection and save the setting to Contacts Provider when an account is selected.

    • [C-2-2] MUST honor the default account setting when handling Intent.ACTION_INSERT and Intent.ACTION_INSERT_OR_EDIT for the ContactsContracts.Contacts.CONTENT_TYPE and ContactsContract.RawContacts.CONTENT_TYPE by initially selecting the account.

4. Application Packaging Compatibility

5. Multimedia Compatibility

  • 5.1.2 Audio Decoding : Added new requirements for decoders capable of outputting mutli-channel audio.

    See revision

    If device implementations support the decoding of AAC input buffers of multichannel streams (ie more than two channels) to PCM through the default AAC audio decoder in the android.media.MediaCodec API, then the following MUST be supported:

    • [C-7-1] MUST be able to be configured by the application using the decoding with the key KEY_MAX_OUTPUT_CHANNEL_COUNT to control whether the content is downmixed to stereo (when using a value of 2) or is output using the native number of channels (when using a value equal or greater to that number). For instance a value of 6 or greater would configure a decoder to output 6 channels when fed 5.1 content.
    • [C-7-2] When decoding, the decoder MUST advertise the channel mask being used on the output format with the KEY_CHANNEL_MASK key, using the android.media.AudioFormat constants (example: CHANNEL_OUT_5POINT1 ).

    If device implementations support audio decoders other than the default AAC audio decoder and are capable of outputting multi-channel audio (ie more than 2 channels) when fed compressed multi-channel content, then:

    • [C-SR] The decoder is STRONGLY RECOMMENDED to be able to be configured by the application using the decoding with the key KEY_MAX_OUTPUT_CHANNEL_COUNT to control whether the content is downmixed to stereo (when using a value of 2) or is output using the native number of channels (when using a value equal or greater to that number). For instance a value of 6 or greater would configure a decoder to output 6 channels when fed 5.1 content.
    • [C-SR] When decoding, the decoder is STRONGLY RECOMMENDED to advertise the channel mask being used on the output format with the KEY_CHANNEL_MASK key, using the android.media.AudioFormat constants (example: CHANNEL_OUT_5POINT1 ).

  • 5.4.1 Raw Audio Capture and Microphone Information : Updates to supported audio sources for audio input streams.

    See revision

    If device implementations declare android.hardware.microphone , they:

  • 5.4.2 Capture for Voice Recognition : Updated requirements for voice recognition audio stream and added requirements for microphone gain levels.

    See revision

    If device implementations declare android.hardware.microphone , they:

    • SHOULD record the voice recognition audio stream with approximately flat amplitude versus frequency characteristics: specifically, ±3 dB, from 100 Hz to 4000 Hz.
    • SHOULD record the voice recognition audio stream with input sensitivity set such that a 90 dB sound power level (SPL) source at 1000 Hz yields RMS of 2500 for 16-bit samples.

    • SHOULD exhibit approximately flat amplitude-versus-frequency characteristics in the mid-frequency range: specifically ±3dB from 100 Hz to 4000 Hz for each and every microphone used to record the voice recognition audio source.
    • [C-SR] are STRONGLY RECOMMENDED to exhibit amplitude levels in the low frequency range: specifically from ±20 dB from 30 Hz to 100 Hz compared to the mid-frequency range for each and every microphone used to record the voice recognition audio source.
    • [C-SR] are STRONGLY RECOMMENDED to exhibit amplitude levels in the high frequency range: specifically from ±30 dB from 4000 Hz to 22 KHz compared to the mid-frequency range for each and every microphone used to record the voice recognition audio source.
    • SHOULD set audio input sensitivity such that a 1000 Hz sinusoidal tone source played at 90 dB Sound Pressure Level (SPL) (measured next to the microphone) yields an ideal response of RMS 2500 within a range of 1770 and 3530 for 16 bit-samples (or -22.35 db ±3dB Full Scale for floating point/double precision samples) for each and every microphone used to record the voice recognition audio source.

  • 5.4.6 Microphone Gain Levels : Moved requirements for Microphone Gain Levels to section 5.4.2.

    See revision

    5.4.6. Microphone Gain Levels [Moved to 5.4.2]

    If device implementations declare android.hardware.microphone , they:

    • SHOULD exhibit approximately flat amplitude-versus-frequency characteristics in the mid-frequency range: specifically ±3dB from 100 Hz to 4000 Hz for each and every microphone used to record the voice recognition audio source.
    • [C-SR] are STRONGLY RECOMMENDED to exhibit amplitude levels in the low frequency range: specifically from ±20 dB from 5 Hz to 100 Hz compared to the mid-frequency range for each and every microphone used to record the voice recognition audio source.
    • [C-SR] are STRONGLY RECOMMENDED to exhibit amplitude levels in the high frequency range: specifically from ±30 dB from 4000 Hz to 22 KHz compared to the mid-frequency range for each and every microphone used to record the voice recognition audio source.
    • SHOULD set audio input sensitivity such that a 1000 Hz sinusoidal tone source played at 90 dB Sound Pressure Level (SPL) yields a response with RMS of 2500 for 16 bit-samples (or -22.35 dB Full Scale for floating point/double precision samples) for each and every microphone used to record the voice recognition audio source.

  • 5.5.4 Audio Offload : Updates to the audio offload playback requirements.

    See revision

    If device implementations support audio offload playback , they:

    • [C-SR] Are STRONGLY RECOMMENDED to trim the played gapless audio content between two clips with the same format when specified by the AudioTrack gapless API and the media container for MediaPlayer.

  • 5.6 Audio Latency : Updates to the audio latency requirements.

    See revision

    For the purposes of this section, use the following definitions:

    • cold output jitter . The variability among separate measurements of cold output latency values.
    • cold input jitter . The variability among separate measurements of cold input latency values.

    If device implementations declare android.hardware.audio.output , they MUST meet or exceed the following requirements:

    • [C-1-2] Cold output latency of 500 milliseconds or less.
    • [C-1-3] Opening an output stream using AAudioStreamBuilder_openStream() MUST take less than 1000 milliseconds.

    If device implementations declare android.hardware.audio.output they are STRONGLY RECOMMENDED to meet or exceed the following requirements:

    • [C-SR] Cold output latency of 100 milliseconds or less over the speaker data path. Existing and new devices that run this version of Android are VERY STRONGLY RECOMMENDED to meet these requirements now. In a future platform release, we will require Cold output latency of 200 ms or less as a MUST.
    • [C-SR] Minimize the cold output jitter.

    If device implementations include android.hardware.microphone , they MUST meet these input audio requirements:

    • [C-3-2] Cold input latency of 500 milliseconds or less.
    • [C-3-3] Opening an input stream using AAudioStreamBuilder_openStream() MUST take less than 1000 milliseconds.

    If device implementations include android.hardware.microphone , they are STRONGLY RECOMMENDED to meet these input audio requirements:

    • [C-SR] Cold input latency of 100 milliseconds or less over the microphone data path. Existing and new devices that run this version of Android are VERY STRONGLY RECOMMENDED to meet these requirements now. In a future platform release we will require Cold input latency of 200 ms or less as a MUST.

    • [C-SR] Continuous input latency of 30 milliseconds or less.
    • [C-SR] Minimize the cold input jitter.

  • 5.10 Professional Audio : Updates to audio latency requirements for professional audio support.

    See revision

    If device implementations report support for feature android.hardware.audio.pro via the android.content.pm.PackageManager class, they:

    • [C-1-2] MUST have the continuous round-trip audio latency, as defined in section 5.6 Audio Latency of 25 milliseconds or less and SHOULD be 10 milliseconds or less over at least one supported path.
    • [C-1-5] MUST meet latencies and USB audio requirements using the AAudio native audio API and AAUDIO_PERFORMANCE_MODE_LOW_LATENCY .
    • [C-1-8] MUST have an average Tap-to-tone latency of 80 milliseconds or less over at least 5 measurements over the speaker to microphone data path.
    • [C-SR] Are STRONGLY RECOMMENDED to provide a consistent level of CPU performance while audio is active and CPU load is varying. This should be tested using the Android app SynthMark . SynthMark uses a software synthesizer running on a simulated audio framework that measures system performance. See the SynthMark documentation for an explanation of the benchmarks. The SynthMark app needs to be run using the “Automated Test” option and achieve the following results: * voicemark.90 >= 32 voices * latencymark.fixed.little <= 15 msec * latencymark.dynamic.little <= 50 msec
    • SHOULD have a latency from touch input to audio output of less than or equal to 40 ms.

    If device implementations include a 4 conductor 3.5mm audio jack, they:

    • [C-2-1] MUST have a mean Continuous Round-trip Audio Latency, as defined in section 5.6 Audio Latency , of 20 milliseconds or less, over 5 measurements with a Mean Absolute Deviation less than 5 milliseconds over the audio jack path using an audio loopback dongle .

  • 5.12 HDR Video : Added a new section for HDR Video requirements.

6. Developer Tools and Options Compatibility

  • 6.1 Developer Tools : Updates to connectivity and GPU Kernel requirements.

    See revision

    If device implementations support adb connections to a host machine via Wi-Fi or Ethernet , they:

    • [C-4-1] MUST have the AdbManager#isAdbWifiSupported() method return true .

    If device implementations support adb connections to a host machine via Wi-Fi or Ethernet , and includes at least one camera, they:

    • [C-5-1] MUST have the AdbManager#isAdbWifiQrSupported() method return true .

    • GPU work information

      Device implementations:

      • [C-6-1] MUST implement the shell command dumpsys gpu --gpuwork to display the aggregated GPU work data returned by the power/gpu_work_period kernel tracepoint, or display no data if the tracepoint is not supported. The AOSP implementation is frameworks/native/services/gpuservice/gpuwork/ .

7. Hardware Compatibility

  • 7.1.4.1 OpenGL ES : Update to recommended extensions.

    See revision

    If device implementations support any of the OpenGL ES versions, they:

    • SHOULD support the EGL_IMG_context_priority and EGL_EXT_protected_content extensions.

  • 7.1.4.2 Vulkan : Updates to version supported for Vulkan.

    See revision

    If device implementations support OpenGL ES 3.1, they:

    • [SR] Are STRONGLY RECOMMENDED to include support for Vulkan 1.3 . Vulkan 1.1
    • MUST NOT support a Vulkan Variant version (ie the variant part of the Vulkan core version MUST be zero).

    If device implementations include a screen or video output, they:

    • [SR] Are STRONGLY RECOMMENDED to include support for Vulkan 1.3 . Vulkan 1.1

    If device implementations include support for Vulkan 1.0 or higher, they:

    • SHOULD support VkPhysicalDeviceProtectedMemoryFeatures and VK_EXT_global_priority .
    • [C-1-12] MUST NOT enumerate support for the VK_KHR_performance_query extension.
    • [C-SR] Are STRONGLY RECOMMENDED to satisfy the requirements specified by the Android Baseline 2021 profile.

  • 7.2.3 Navigation Keys :

    See revision

    Device implementations:

    • [C-SR] Are STRONGLY RECOMMENDED to provide all navigation functions as cancellable. 'Cancellable' is defined as the user's ability to prevent the navigation function from executing (eg going home, going back, etc.) if the swipe is not released past a certain threshold.

    If the back navigation function is provided and the user cancels the Back gesture, then:

    • [C-8-1] OnBackInvokedCallback.onBackCancelled() MUST be called.
    • [C-8-2] OnBackInvokedCallback.onBackInvoked() MUST NOT be called.
    • [C-8-3] KEYCODE_BACK event MUST NOT be dispatched.

    If the back navigation function is provided but the foreground application does NOT have an OnBackInvokedCallback registered, then:

    • The system SHOULD provide an animation for the foreground application that suggests that the user is going back, as provided in AOSP.

    If device implementations provide support for the system API setNavBarMode to allow any system app with android.permission.STATUS_BAR permission to set the navigation bar mode, then they:

    • [C-9-1] MUST provide support for kid-friendly icons or button-based navigation as provided in the AOSP code.

  • 7.3.1 Accelerometer : Updates to sensor requirements for accelerometers.

    See revision

    If device implementations include an accelerometer, a 3-axis accelerometer, they:

    • [C-1-2] MUST implement and report TYPE_ACCELEROMETER sensor.
    • [SR] are STRONGLY RECOMMENDED to implement the TYPE_SIGNIFICANT_MOTION composite sensor.
    • [SR] are STRONGLY RECOMMENDED to implement and report TYPE_ACCELEROMETER_UNCALIBRATED sensor. Android devices are STRONGLY RECOMMENDED to meet this requirement so they will be able to upgrade to the future platform release where this might become REQUIRED.
    • SHOULD implement the TYPE_SIGNIFICANT_MOTION , TYPE_TILT_DETECTOR , TYPE_STEP_DETECTOR , TYPE_STEP_COUNTER composite sensors as described in the Android SDK document.

    If device implementations include a 3-axis accelerometer, they:

    • [C-2-1] MUST implement and report TYPE_ACCELEROMETER sensor.
    • [C-SR] Are STRONGLY RECOMMENDED to implement the TYPE_SIGNIFICANT_MOTION composite sensor.
    • [C-SR] Are STRONGLY RECOMMENDED to implement and report TYPE_ACCELEROMETER_UNCALIBRATED sensor. Android devices are STRONGLY RECOMMENDED to meet this requirement so they will be able to upgrade to the future platform release where this might become REQUIRED.
    • SHOULD implement the TYPE_SIGNIFICANT_MOTION , TYPE_TILT_DETECTOR , TYPE_STEP_DETECTOR , TYPE_STEP_COUNTER composite sensors as described in the Android SDK document.

    If device implementations include an accelerometer with less than 3 axes, they:

    • [C-3-1] MUST implement and report TYPE_ACCELEROMETER_LIMITED_AXES sensor.
    • [C-SR] Are STRONGLY_RECOMMENDED to implement and report TYPE_ACCELEROMETER_LIMITED_AXES_UNCALIBRATED sensor.

    If device implementations include a 3-axis accelerometer and any of the TYPE_SIGNIFICANT_MOTION , TYPE_TILT_DETECTOR , TYPE_STEP_DETECTOR , TYPE_STEP_COUNTER composite sensors are implemented:

    • [C-4-1] The sum of their power consumption MUST always be less than 4 mW.

    If device implementations include a 3-axis accelerometer and a 3-axis gyroscope sensor, they:

    • [C-5-1] MUST implement the TYPE_GRAVITY and TYPE_LINEAR_ACCELERATION composite sensors.

    If device implementations include a 3-axis accelerometer, a 3-axis gyroscope sensor, and a magnetometer sensor, they:

    • [C-6-1] MUST implement a TYPE_ROTATION_VECTOR composite sensor.

  • 7.3.4 Gyroscopes : Updates to sensor requirements for gyroscopes.

    See revision

    If device implementations include a gyroscope, they:

    • [C-1-1] MUST be able to report events up to a frequency of at least 50 Hz.
    • [C-1-4] MUST have a resolution of 12-bits or more.
    • [C-1-5] MUST be temperature compensated.
    • [C-1-6] MUST be calibrated and compensated while in use, and preserve the compensation parameters between device reboots.
    • [C-1-7] MUST have a variance no greater than 1e-7 rad^2 / s^2 per Hz (variance per Hz, or rad^2 / s). The variance is allowed to vary with the sampling rate, but MUST be constrained by this value. In other words, if you measure the variance of the gyro at 1 Hz sampling rate it SHOULD be no greater than 1e-7 rad^2/s^2.
    • [C-SR] Calibration error is STRONGLY RECOMMENDED to be less than 0.01 rad/s when device is stationary at room temperature.
    • [C-SR] Are STRONGLY RECOMMENDED to have a resolution of 16-bits or more.
    • SHOULD report events up to at least 200 Hz.

    If device implementations include a 3-axis gyroscope, they:

    • [C-2-1] MUST implement the TYPE_GYROSCOPE sensor.

    If device implementations include a gyroscope with less than 3 axes, they:

    • [C-3-1] MUST implement and report TYPE_GYROSCOPE_LIMITED_AXES sensor.
    • [C-SR] Are STRONGLY_RECOMMENDED to implement and report TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATED sensor.

    If device implementations include a 3-axis gyroscope, an accelerometer sensor and a magnetometer sensor, they:

    • [C-4-1] MUST implement a TYPE_ROTATION_VECTOR composite sensor.

    If device implementations include a 3-axis accelerometer and a 3-axis gyroscope sensor, they:

    • [C-5-1] MUST implement the TYPE_GRAVITY and TYPE_LINEAR_ACCELERATION composite sensors.

  • 7.3.10 Biometric Sensors : Updates to sensor requirements for biometric sensors.

    See revision

    Biometric sensors can be classified as Class 3 (formerly Strong ), Class 2 (formerly Weak ), or Class 1 (formerly Convenience ) based on their spoof and imposter acceptance rates, and on the security of the biometric pipeline. This classification determines the capabilities the biometric sensor has to interface with the platform and with third-party applications. Sensors need to meet additional requirements as detailed below if they wish to be classified as either Class 1 , Class 2 or Class 3 . Sensors are classified as Class 1 by default, and need to meet additional requirements as detailed below if they wish to be classified as either Class 2 or Class 3 . Both Class 2 and Class 3 biometrics get additional capabilities as detailed below.

    If device implementations wish to treat a biometric sensor as Class 1 (formerly Convenience ), they:

    • [C-1-11] MUST have a spoof and imposter acceptance rate not higher than 30%, with (1) a spoof and imposter acceptance rate for Level A presentation attack instrument (PAI) species not higher than 30%, and (2) a spoof and imposter acceptance rate of Level B PAI species not higher than 40%, as measured by the Android Biometrics Test Protocols.

    If device implementations wish to treat a biometric sensor as Class 2 (formerly Weak ), they:

    • [C-2-2] MUST have a spoof and imposter acceptance rate not higher than 20%, with (1) a spoof and imposter acceptance rate for Level A presentation attack instrument (PAI) species not higher than 20%, and (2) a spoof and imposter acceptance rate of Level B PAI species not higher than 30%, as measured by the Android Biometrics Test Protocols .

    If device implementations wish to treat a biometric sensor as Class 3 (formerly Strong ), they:

    • [C-3-3] MUST have a spoof and imposter acceptance rate not higher than 7%, with (1) a spoof and imposter acceptance rate for Level A presentation attack instrument (PAI) species not higher than 7%, and (2) a spoof and imposter acceptance rate of Level B PAI species not higher than 20%, as measured by the Android Biometrics Test Protocols .

  • 7.3.13 IEEE 802.1.15.4 (UWB) : Added a new requirements section for UWB.

    See revision

    7.3.13. IEEE 802.1.15.4 (UWB)

    If device implementations include support for 802.1.15.4 and expose the functionality to a third-party application, they:

    • [C-1-1] MUST implement the corresponding Android API in android.uwb.
    • [C-1-2] MUST report the hardware feature flag android.hardware.uwb.
    • [C-1-3] MUST support all the relevant UWB profiles defined in Android implementation.
    • [C-1-4] MUST provide a user affordance to allow the user to toggle the UWB radio on/off state.
    • [C-1-5] MUST enforce that apps using UWB radio hold UWB_RANGING permission (under NEARBY_DEVICES permission group).
    • [C-1-6] Are STRONGLY RECOMMENDED to pass the relevant conformance and certification tests defined by standard organizations, including FIRA , CCC and CSA .

  • 7.4.1 Telephony : Updates to telephony requirements for GSM and CDMA telephony, and cellular usage settings.

    See revision

    If device implementations support eUICCs or eSIMs/embedded SIMs and include a proprietary mechanism to make eSIM functionality available for third-party developers, they:

    If device implementations include GSM or CDMA telephony, then:

    If the device device implementations include GSM or CDMA telephony and provide a system status bar, then:

    • [C-6-7] MUST select a representative active subscription for a given group UUID to display to the user in any affordances that provide SIM status information. Examples of such affordances include the status bar cellular signal icon or quick settings tile.
    • [C-SR] It is STRONGLY RECOMMENDED that the representative subscription is chosen to be the active data subscription unless the device is in a voice call, during which it is STRONGLY RECOMMENDED that the representative subscription is the active voice subscription.

    If device implementations include GSM or CDMA telephony, then:

    • [C-6-8] MUST be capable of opening and concurrently utilizing the maximum number of logical channels (20 in total) for each UICC per ETSI TS 102 221.
    • [C-6-10] MUST NOT apply any of the following behaviors to active carrier apps (as designated by TelephonyManager#getCarrierServicePackageName ) automatically or without explicit user confirmation:
      • Revoke or limit network access
      • Revoke permissions
      • Restrict background or foreground app execution beyond the existing power management features included in AOSP
      • Disable or uninstall the app

    If device device implementations include GSM or CDMA telephony and all active, non-opportunistic subscriptions that share a group UUID are disabled, physically removed from the device, or marked opportunistic, then the device:

    • [C-7-1] MUST automatically disable all remaining active opportunistic subscriptions in the same group.

    If device implementations include GSM telephony but not CDMA telephony, they:

    If the device implementations support eUICCs with multiple ports and profiles, they:

  • 7.4.1.1 Number Blocking Compatibility : Updates to the number blocking requirements.

    See revision

    If device implementations report the android.hardware.telephony feature , they:

    • [C-1-4] MUST write to the platform call log provider for a blocked call and MUST filter calls with BLOCKED_TYPE out of the default call log view in the pre-installed dialer app.
    • SHOULD provide a user affordance to show blocked calls in the pre-installed dialer app.

  • 7.4.1.3 Cellular NAT-T Keepalive Offload : New section for Cellular NAT-T Keepalive Offload.

    See revision

    7.4.1.3. Cellular NAT-T Keepalive Offload

    Device implementations:

    • SHOULD include support for Cellular keepalive offload.

    If device implementations include support for Cellular keepalive offload and exposes the functionality to third-party apps, they:

    • [C-1-1] MUST support the SocketKeepAlive API.
    • [C-1-2] MUST support at least one concurrent keepalive slot over cellular.
    • [C-1-3] MUST support as many concurrent cellular keepalive slots as are supported by the Cellular Radio HAL.
    • [C-SR] Are STRONGLY RECOMMENDED to support at least three cellular keepalive slots per radio instance.

    If device implementations do not include support for cellular keepalive offload, they:

    • [C-2-1] MUST return ERROR_UNSUPPORTED.

  • 7.4.2.5 Wi-Fi Location (Wi-Fi Round Trip Time - RTT) : Updates to Wi-Fi location accuracy.

    See revision

    If device implementations include support for Wi-Fi Location and expose the functionality to third-party apps, then they:

    • [C-1-4] MUST be accurate to within 2 meters at 80 MHz bandwidth at the 68th percentile (as calculated with the Cumulative Distribution Function).
    • [C-SR] Are STRONGLY RECOMMENDED to report it accurately to within 1.5 meters at 80 MHz bandwidth at the 68th percentile (as calculated with the Cumulative Distribution Function).

  • 7.4.2.6 Wi-Fi Keepalive Offload : Updated to add cellular keepalive offload requirements.

    See revision

    Device implementations:

    • SHOULD include support for Wi-Fi keepalive offload.

    If device implementations include support for Wi-Fi keepalive offload and expose the functionality to third-party apps, they:

    • [C-1-1] MUST support the SocketKeepAlive API.
    • [C-1-2] MUST support at least three concurrent keepalive slots over Wi-Fi
      and at least one keepalive slot over cellular.

    If device implementations do not include support for Wi-Fi keepalive offload, they:

  • 7.4.2.9 Trust On First Use (TOFU) : Added Trust on First Use requirements section.

    See revision

    7.4.2.9 Trust On First Use (TOFU)

    If device implementations support Trust on first usage (TOFU) and allow the user to define WPA/WPA2/WPA3-Enterprise configurations, then they:

    • [C-4-1] MUST provide the user an option to select to use TOFU.

  • 7.4.3 Bluetooth : Update to Bluetooth requirements.

    See revision

    If device implementations support Bluetooth Audio profile, they:

    • SHOULD support Advanced Audio Codecs and Bluetooth Audio Codecs (eg LDAC) with A2DP.

    If device implementations return true for the BluetoothAdapter.isLeAudioSupported() API, then they:

    • [C-7-1] MUST support unicast client.
    • [C-7-2] MUST support 2M PHY.
    • [C-7-3] MUST support LE Extended advertising.
    • [C-7-4] MUST support at least 2 CIS connections in a CIG.
    • [C-7-5] MUST enable BAP unicast client, CSIP set coordinator, MCP server, VCP controller, CCP server simultaneously.
    • [C-SR] Are STRONGLY RECOMMENDED to enable HAP unicast client.

    If device implementations return true for the BluetoothAdapter.isLeAudioBroadcastSourceSupported() API, then they:

    • [C-8-1] MUST support at least 2 BIS links in a BIG.
    • [C-8-2] MUST enable BAP broadcast source, BAP broadcast assistant simultaneously.
    • [C-8-3] MUST support LE Periodic advertising.

    If device implementations return true for the BluetoothAdapter.isLeAudioBroadcastAssistantSupported() API, then they:

    • [C-9-1] MUST support PAST (Periodic Advertising Sync Transfer).
    • [C-9-2] MUST support LE Periodic advertising.

    If device implementations declare FEATURE_BLUETOOTH_LE , they:

    • [C-10-1] MUST have RSSI measurements be within +/-9dB for 95% of the measurements at 1m distance from a reference device transmitting at ADVERTISE_TX_POWER_HIGH in line of sight environment.
    • [C-10-2] MUST include Rx/Tx corrections to reduce per-channel deviations so that the measurements on each of the 3 channels, on each of the antennas (if multiple are used), are within +/-3dB of one another for 95% of the measurements.
    • [C-SR] Are STRONGLY RECOMMENDED to measure and compensate for Rx offset to ensure the median BLE RSSI is -60dBm +/-10 dB at 1m distance from a reference device transmitting at ADVERTISE_TX_POWER_HIGH , where devices are oriented such that they are on 'parallel planes' with screens facing the same direction.
    • [C-SR] Are STRONGLY RECOMMENDED to measure and compensate for Tx offset to ensure the median BLE RSSI is -60dBm +/-10 dB when scanning from a reference device positioned at 1m distance and transmitting at ADVERTISE_TX_POWER_HIGH , where devices are oriented such that they are on 'parallel planes' with screens facing the same direction.

    It is STRONGLY RECOMMENDED to follow the measurement setup steps specified in Presence Calibration Requirements .

    If device implementations support Bluetooth version 5.0, then they:

    • [C-SR] Are STRONGLY RECOMMENDED to provide support for:
      • LE 2M PHY
      • LE Codec PHY
      • LE Advertising Extension
      • Periodic advertising
      • At least 10 advertisement sets
      • At least 8 LE concurrent connections. Each connection can be in either connection topology roles.
      • LE Link Layer Privacy
      • A "resolving list" size of at least 8 entries

  • 7.4.9 UWB : Added a requirements section for UWB hardware.

    See revision

    7.4.9. UWB

    If device implementations report support for feature android.hardware.uwb via the android.content.pm.PackageManager class, then they:

    • [C-1-1] MUST ensure the distance measurements are within +/-15 cm for 95% of the measurements in the line of sight environment at 1m distance in a non-reflective chamber.
    • [C-1-2] MUST ensure that the median of the distance measurements at 1m from the reference device is within [0.75m, 1.25m], where ground truth distance is measured from the top edge of the DUT held face up and tilted 45 degrees.

    It is STRONGLY RECOMMENDED to follow the measurement setup steps specified in Presence Calibration Requirements .

  • 7.5 Cameras : Updates to the requirements for HDR 10-bit output capability.

    See revision

    If device implementations support HDR 10-bit output capability, then they:

    • [C-2-1] MUST support at least the HLG HDR profile for every camera device that supports 10-bit output.
    • [C-2-2] MUST support 10-bit output for either the primary rear-facing or the primary front-facing camera.
    • [C-SR] Are STRONGLY RECOMMENDED to support 10-bit output for both primary cameras.
    • [C-2-3] MUST support the same HDR profiles for all BACKWARD_COMPATIBLE-capable physical sub-cameras of a logical camera, and the logical camera itself.

    For Logical camera devices which support 10-bit HDR that implement the android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO API, they:

    • [C-3-1] MUST support switching between all the backwards-compatible physical cameras via the CONTROL_ZOOM_RATIO control on the logical camera.

  • 7.7.2 USB Host Mode : Revisions for dual role ports.

    See revision

    If device implementations include a USB port supporting host mode and USB Type-C, they:

    • [C-4-1] MUST implement Dual Role Port functionality as defined by the USB Type-C specification (section 4.5.1.3.3). For Dual Role Ports, On devices that include a 3.5mm audio jack, the USB sink detection (host mode) MAY be off by default but it MUST be possible for the user to enable it.

  • 7.11 Media Performance Class : Updated to include Android T.

    See revision

    If device implementations return non-zero value for android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS , they:

    • [C-1-3] MUST meet all requirements for "Media Performance Class" described in section 2.2.7 .

    In other words, media performance class in Android T is only defined for handheld devices at version T, S or R.

    See section 2.2.7 for device-specific requirements.

9. Security Model Compatibility

  • 9.1 Permissions : Extend accepted paths for permissions allowlists for preinstalled apps to APEX files.

    See revision

    • [C-0-2] Permissions with a protectionLevel of PROTECTION_FLAG_PRIVILEGED MUST only be granted to apps preinstalled in the privileged path(s) of the system image (as well as APEX files ) and be within the subset of the explicitly allowlisted permissions for each app. The AOSP implementation meets this requirement by reading and honoring the allowlisted permissions for each app from the files in the etc/permissions/ path and using the system/priv-app path as the privileged path.

  • 9.7 Security Features : Updates to initialization requirements to maintain kernel integrity.

    See revision

    Kernel integrity and self-protection features are integral to Android security. Device implementations:

    • [C-SR] Are STRONGLY RECOMMENDED to enable stack initialization in the kernel to prevent uses of uninitialized local variables ( CONFIG_INIT_STACK_ALL or CONFIG_INIT_STACK_ALL_ZERO ). Also, device implementations SHOULD NOT assume the value used by the compiler to initialize the locals.

  • 9.8.7 Privacy — Clipboard Access : Automatically clear clipboard data after 60 minutes following a cut/copy/paste activity to protect user privacy.

    See revision

    Device implementations:

    • [C-0-1] MUST NOT return a clipped data from the clipboard (eg via the ClipboardManager API) unless the 3rd-party app is the default IME or is the app that currently has focus.
    • [C-0-2] MUST clear clipboard data at most 60 minutes after it has last been placed in a clipboard or read from a clipboard.

  • 9.11 Keys and Credentials : Updates to the secure lock screen requirements, including the addition of ECDH and 3DES to crypto algorithms.

    See revision

    When the device implementation supports a secure lock screen, it:

    • [C-1-2] MUST have implementations of RSA, AES, ECDSA, ECDH (if IKeyMintDevice is supported), 3DES, and HMAC cryptographic algorithms and MD5, SHA1, and SHA-2 family hash functions to properly support the Android Keystore system's supported algorithms in an area that is securely isolated from the code running on the kernel and above. Secure isolation MUST block all potential mechanisms by which kernel or userspace code might access the internal state of the isolated environment, including DMA. The upstream Android Open Source Project (AOSP) meets this requirement by using the Trusty implementation, but another ARM TrustZone-based solution or a third-party reviewed secure implementation of a proper hypervisor-based isolation are alternative options.

  • 9.11.1 Secure Lock Screen, Authentication, and Virtual Devices : Added requirements section for virtual devices and authentication transfers.

    See revision

    If device implementations add or modify the authentication methods to unlock the lock screen and a new authentication method is based on a physical token or the location:

    • [C-6-3] The user MUST be challenged for one of the recommended primary authentication methods (egPIN, pattern, password) at least once every 4 hours or less. When a physical token meets the requirements for TrustAgent implementations in CX, timeout restrictions defined in C-9-5 apply instead.

    If device implementations allow applications to create secondary virtual displays and do not support associated input events, such as via VirtualDeviceManager , they:

    • [C-9-1] MUST lock these secondary virtual display(s) when the device's default display is locked, and unlock these secondary virtual display(s) when the device's default display is unlocked.

    If device implementations allow applications to create secondary virtual displays and support associated input events, such as via VirtualDeviceManager , they:

    • [C-10-1] MUST support separate lock states per virtual device
    • [C-10-2] MUST disconnect all virtual devices upon idle timeout
    • [C-10-3] MUST have an idle timeout
    • [C-10-4] MUST lock all displays when the user initiates a lockdown , including via the lockdown user affordance required for handheld devices (see Section 2.2.5[9.11/H-1-2] )
    • [C-10-5] MUST have separate virtual device instances per user
    • [C-10-6] MUST disable the creation of associated input events via VirtualDeviceManager when indicated by DevicePolicyManager.setNearbyAppStreamingPolicy
    • [C-10-7] MUST use a separate clipboard solely for each virtual device (or disable the clipboard for virtual devices)
    • [C-10-11] MUST disable authentication UI on virtual devices, including knowledge factor entry and biometric prompt
    • [C-10-12] MUST restrict intents initiated from a virtual device to display only on the same virtual device
    • [C-10-13] MUST not use a virtual device lock state as user authentication authorization with the Android Keystore System. See KeyGenParameterSpec.Builder.setUserAuthentication* .

    When device implementations allow the user to transfer the primary authentication knowledge-factor from a source device to a target device, such as for initial setup of the target device, they:

    • [C-11-1] MUST encrypt the knowledge-factor with protection guarantees similar to those described in the Google Cloud Key Vault Service security whitepaper when transferring the knowledge-factor from the source device to the target device such that the knowledge-factor cannot be remotely decrypted or used to remotely unlock either device.
    • [C-11-2] MUST, on the source device , ask the user to confirm the knowledge-factor of the source device before transferring the knowledge-factor to the target device.
    • [C-11-3] MUST, on a target device lacking any set primary authentication knowledge-factor, ask the user to confirm a transferred knowledge-factor on the target device before setting that knowledge-factor as the primary authentication knowledge-factor for the target device and before making available any data transferred from a source device.

    If device implementations have a secure lock screen and include one or more trust agents, which call the TrustAgentService.grantTrust() System API with the FLAG_GRANT_TRUST_TEMPORARY_AND_RENEWABLE flag they:

    • [C-12-1] MUST only call grantTrust() with the flag when connected to a proximate physical device with a lockscreen of its own, and when the user has authenticated their identity against that lockscreen. Proximate devices can use on-wrist or on-body detection mechanisms after a one-time user unlock to satisfy the user authentication requirement.
    • [C-12-2] MUST put the device implementation into the TrustState.TRUSTABLE state when the screen is turned off (such as via a button press or display time out) and the TrustAgent has not revoked trust. The AOSP satisfies this requirement.
    • [C-12-3] MUST only move the device from TrustState.TRUSTABLE to the TrustState.TRUSTED state if the TrustAgent is still granting trust based on the requirements in C-12-1.
    • [C-12-4] MUST call TrustManagerService.revokeTrust() after a maximum of 24 hours from granting trust, an 8 hour idle window, or when the underlying connection to the proximate physical device is lost.

    If device implementations allow applications to create secondary virtual displays and support associated input events such as via VirtualDeviceManager and the displays are not marked with VIRTUAL_DISPLAY_FLAG_SECURE, they:

    • [C-13-8] MUST block activities with the attribute android:canDisplayOnRemoteDevices or the meta-data android.activity.can_display_on_remote_devices set to false from being started on the virtualdevice.
    • [C-13-9] MUST block activities which do not explicitly enable streaming and which indicate they show sensitive content, including via SurfaceView#setSecure, FLAG_SECURE, or SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS, from being started on the virtual device.
    • [C-13-10] MUST disable installation of apps initiated from virtual devices.

  • 9.11.2 Strongbox : Making insider attack resistance (IAR) a necessary requirement.

    See revision

    To validate compliance with [C-1-3] through [C-1-9], device implementations:

    • [C-SR] are STRONGLY RECOMMENDED to provide insider attack resistance (IAR), which means that an insider with access to firmware signing keys cannot produce firmware that causes the StrongBox to leak secrets, to bypass functional security requirements or otherwise enable access to sensitive user data. The recommended way to implement IAR is to allow firmware updates only when the primary user password is provided via the IAuthSecret HAL. IAR will become a MUST requirement in Android 14 (AOSP experimental).

  • 9.11.3 Identity Credential : Added information about the Identity Credential system reference implementation.

    See revision

    The Identity Credential System is defined and achieved by implementing all APIs in the android.security.identity.* package. These APIs allows app developers to store and retrieve user identity documents. Device implementations:

    The upstream Android Open Source Project provides a reference implementation of a trusted application ( libeic ) that can be used to implement the Identity Credential system.

  • 9.11.4 ID Attestation : Added a section for ID attestation requirement.

    See revision

    9.11.4. ID Attestation

    Device implementations MUST support ID attestation .

  • 9.17 Android Virtualization Framework : Added a requirements section for Android Virtualization Framework.

    See revision

    9.17. Android Virtualization Framework

    If the device implements support for the Android Virtualization Framework APIs ( android.system.virtualmachine.* ), the Android host:

    • [C-1-1] MUST support all the APIs defined by the android.system.virtualmachine.* package.
    • [C-1-2] MUST NOT modify the Android SELinux and permission model for the management of Protected Virtual Machines.
    • [C-1-3] MUST NOT modify, omit, or replace the neverallow rules present within the system/sepolicy provided in the upstream Android Open Source Project (AOSP) and the policy MUST compile with all neverallow rules present.
    • [C-1-4] MUST NOT allow untrusted code (eg 3p apps) to create and run a Protected Virtual Machine. Note: This might change in future Android releases.
    • [C-1-5] MUST NOT allow a Protected Virtual Machine to execute code that is not part of the factory image or their updates. Anything that is not covered by Android Verified Boot (eg files downloaded from the Internet or sideloaded) MUST NOT be allowed to be run in a Protected Virtual Machine.

    If the device implements support for the Android Virtualization Framework APIs ( android.system.virtualmachine.* ), then any Protected Virtual Machine instance:

    • [C-2-1] MUST be able to run all operating systems available in the virtualization APEX in a Protected Virtual Machine.
    • [C-2-2] MUST NOT allow a Protected Virtual Machine to run an operating system that is not signed by the device implementor or OS vendor.
    • [C-2-3] MUST NOT allow a Protected Virtual Machine to execute data as code (eg SELinux neverallow execmem).
    • [C-2-4] MUST NOT modify, omit, or replace the neverallow rules present within the system/sepolicy/microdroid provided in the upstream Android Open Source Project (AOSP).
    • [C-2-5] MUST implement Protected Virtual Machine defense-in-depth mechanisms (eg SELinux for pVMs) even for non-Microdroid operating systems.
    • [C-2-6] MUST ensure that the pVM firmware refuses to boot if it cannot verify the initial image.
    • [C-2-7] MUST ensure that the pVM firmware refuses to boot if the integrity of the instance.img is compromised.

    If the device implements support for the Android Virtualization Framework APIs ( android.system.virtualmachine.* ), then the hypervisor:

    • [C-3-1] MUST NOT allow any pVM to have access to a page belonging to another entity (ie other pVM or hypervisor), unless explicitly shared by the page owner. This includes the host VM. This applies to both CPU and DMA accesses.
    • [C-3-2] MUST wipe a page after it is used by a VM and before it is returned to the host (eg the pVM is destroyed).
    • [C-3-3] MUST ensure that the pVM firmware is loaded and executed prior to any code in a pVM.
    • [C-3-4] MUST ensure that BCC and CDIs provided to a pVM instance can only be derived by that particular instance.

    If the device implements support for the Android Virtualization Framework APIs, then across all areas:

    • [C-4-1] MUST NOT provide functionality to a pVM that allows bypassing the Android Security Model.

    If the device implements support for the Android Virtualization Framework APIs, then:

    • [C-5-1] MUST support Isolated Compilation of an ART runtime update.

    If the device implements support for the Android Virtualization Framework APIs, then for Key Management:

    • [C-6-1] MUST root DICE chain at a point that the user cannot modify, even on unlocked devices. (To ensure it cannot be spoofed).
    • [C-6-2] MUST do DICE properly ie provide the correct values. But it might not have to go to that level of detail.

Back to top