Android 12 introduce nuove fantastiche funzionalità e API per gli sviluppatori. Le sezioni seguenti ti aiutano a scoprire le funzionalità delle tue app e a iniziare a utilizzare le API correlate.
Per un elenco dettagliato delle API nuove, modificate e rimosse, leggi il report diff API. Per informazioni dettagliate sulle nuove API, visita la documentazione di riferimento delle API Android. Le nuove API sono evidenziate per una maggiore visibilità. Inoltre, per scoprire le aree in cui le modifiche alla piattaforma potrebbero influire sulle tue app, consulta le modifiche al comportamento di Android 12 per le app che hanno come target Android 12 e per tutte le app.
Esperienza utente
Material You
Android 12 introduce un nuovo linguaggio di progettazione chiamato Material You, che ti aiuta a creare app più personalizzate e belle. Per integrare tutti gli ultimi aggiornamenti di Material Design 3 nelle tue app, prova una versione alpha di Material Design Components.
Miglioramenti ai widget
Android 12 rinnova l'API Widgets esistente per migliorare l'esperienza utente e sviluppatore nella piattaforma e nei launcher. Abbiamo creato una guida per aiutarti a verificare che il widget sia compatibile con Android 12 e ad aggiornarlo con nuove funzionalità.
Per ulteriori informazioni, consulta Miglioramenti dei widget di Android 12.
Inserimento di contenuti avanzati
Android 12 introduce una nuova API unificata che consente alla tua app di ricevere contenuti avanzati da qualsiasi origine disponibile: appunti, tastiera o trascinamento.
Per ulteriori informazioni, vedi Ricevere contenuti richi.
API delle schermate iniziali delle app
Android 12 introduce una nuova animazione di avvio delle app per tutte le app che include un movimento all'interno dell'app dal punto di avvio, una schermata iniziale che mostra l'icona dell'app e una transizione all'app stessa. Per ulteriori dettagli, consulta la guida per gli sviluppatori sulle schermate iniziali.
API per angoli arrotondati
Android 12 introduce RoundedCorner
e WindowInsets.getRoundedCorner(int
position)
,
che forniscono il raggio e il punto centrale per gli angoli arrotondati.
Per ulteriori informazioni, vedi Angoli arrotondati.
Esperienze aptiche avanzate
Android 12 espande gli strumenti per creare un feedback aptico informativo per gli eventi dell'interfaccia utente, effetti coinvolgenti e piacevoli per i giochi e aptica attentiva per la produttività.
Effetti attuatore
Android 12 aggiunge effetti espressivi come il ticchettio basso che sfruttano la larghezza di banda di frequenza più ampia degli attuatori più recenti. Gli sviluppatori di giochi ora possono accedere a più attuatori diversi in modo indipendente nei controller di gioco per offrire lo stesso effetto in modo sincrono o effetti aptici diversi su più attuatori. Per gli sviluppatori, consigliamo di utilizzare le costanti e i primitivi come elementi costitutivi per effetti aptici avanzati: le costanti per migliorare gli eventi dell'interfaccia utente e Haptic Composer per sequenziare i primitivi per effetti più complessi. Queste API sono disponibili per essere provate sui dispositivi Pixel 4 e continuiamo a collaborare con i nostri partner produttori di dispositivi per offrire agli utenti di tutto l'ecosistema il supporto aptico più recente.
Effetti aptici accoppiati all'audio
Le app per Android 12 possono generare un feedback aptico derivato da una sessione audio utilizzando il vibratore dello smartphone. In questo modo, potrai goderti esperienze di gioco e audio più coinvolgenti. Ad esempio, le suonerie con feedback aptico possono aiutarti a identificare i chiamanti, mentre un gioco di guida può simulare la sensazione di un terreno accidentato.
Per ulteriori informazioni, consulta la HapticGenerator
documentazione di riferimento.
AppSearch
Android 12 introduce AppSearch, un motore di ricerca on-device ad alte prestazioni, come servizio di sistema. AppSearch consente alle applicazioni di indicizzare i dati strutturati e di eseguire ricerche al loro interno con funzionalità di ricerca a testo intero integrate. Inoltre, AppSearch supporta funzionalità di ricerca native, come l'indicizzazione e il recupero altamente efficienti, il supporto multilingue e la classificazione per pertinenza.

AppSearch è disponibile in due versioni: un indice locale da utilizzare per la tua applicazione compatibile con le versioni precedenti di Android o un indice centrale gestito per l'intero sistema in Android 12. Utilizzando l'indice centrale, la tua applicazione può consentire la visualizzazione dei suoi dati sulle superfici dell'interfaccia utente di sistema tramite il componente di intelligence preinstallato del sistema. I dati esatti visualizzati nelle superfici della UI di sistema dipendono dall'OEM. Inoltre, la tua applicazione può condividere in modo sicuro i dati con altre applicazioni, per consentire loro di eseguire ricerche anche su questi dati.
Scopri di più su AppSearch nella guida per gli sviluppatori e inizia a utilizzarlo con la libreria Jetpack AppSearch, che fornisce una superficie API adatta agli sviluppatori e il supporto del processore di annotazioni.
Modalità di gioco
L'API Game Mode e gli interventi della modalità Gioco ti consentono di ottimizzare il gameplay dando la priorità a caratteristiche come le prestazioni o la durata della batteria in base alle impostazioni degli utenti o alle configurazioni specifiche del gioco.
Per maggiori informazioni, vedi Modalità Gioco.
Consigli e miglioramenti per il picture in picture (PIP)
Android 12 introduce i seguenti miglioramenti per la modalità PIP:
Supporto per nuovi gesti PIP
Android 12 ora supporta i gesti di ridimensionamento e pizzico per zoomare per la finestra PIP:
Per nascondere la finestra, l'utente può trascinarla sul bordo sinistro o destro. Per ripristinare la finestra, l'utente può toccare la parte visibile della finestra nascosta o trascinarla.
L'utente ora può ridimensionare la finestra PIP utilizzando il gesto di pizzicare per zoomare.
Nuove funzionalità consigliate che supportano un'esperienza di transizione PIP ottimizzata
Android 12 ha aggiunto miglioramenti estetici significativi alle transizioni animate tra le finestre a schermo intero e PiP. Ti consigliamo vivamente di implementare tutte le modifiche applicabili. Una volta fatto, queste modifiche vengono scalate automaticamente su schermi di grandi dimensioni come pieghevoli e tablet senza alcun ulteriore lavoro richiesto.
Queste funzionalità sono:
Un nuovo flag API per una transizione più fluida alla modalità PIP con la navigazione tramite gesti
Utilizza il flag
setAutoEnterEnabled
per fornire transizioni più fluide alla modalità PIP quando scorri verso l'alto fino alla schermata Home in modalità di navigazione tramite gesti. In precedenza, Android attendeva il completamento dell'animazione di scorrimento verso l'alto per la schermata Home prima di mostrare la finestra PIP.Animazioni più fluide quando si entra e si esce dalla modalità PIP
Il flag
SourceRectHint
viene ora riutilizzato per implementare un'animazione più fluida quando si entra e si esce dalla modalità PIP.Un nuovo flag API per disattivare il ridimensionamento continuo per i contenuti non video
Il flag
SeamlessResizeEnabled
fornisce un'animazione di dissolvenza incrociata molto più fluida quando si ridimensiona il contenuto non video nella finestra PIP. In precedenza, il ridimensionamento dei contenuti non video in una finestra PIP poteva creare artefatti visivi stridenti.
Nuove notifiche di chiamata che consentono di classificare l'importanza delle chiamate in arrivo
Android 12 aggiunge il nuovo stile di notifica
Notification.CallStyle
per le chiamate. L'utilizzo di questo modello consente all'app di indicare l'importanza delle
chiamate attive visualizzando un chip in evidenza che mostra l'ora della chiamata nella
barra di stato; l'utente può toccare questo chip per tornare alla chiamata.
Poiché le chiamate in arrivo e in corso sono le più importanti per gli utenti, queste notifiche hanno la priorità nella tendina. Questa classificazione consente inoltre al sistema di inoltrare potenzialmente queste chiamate con priorità ad altri dispositivi.
Implementa il seguente codice per tutti i tipi di chiamate.
Kotlin
// Create a new call with the user as caller. val incoming_caller = Person.Builder() .setName("Jane Doe") .setImportant(true) .build()
Java
// Create a new call with the user as caller. Person incoming_caller = new Person.Builder() .setName("Jane Doe") .setImportant(true) .build();
Utilizza forIncomingCall()
per creare una notifica in stile chiamata per una chiamata in arrivo.
Kotlin
// Create a call style notification for an incoming call. val builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forIncomingCall(caller, declineIntent, answerIntent)) .addPerson(incoming_caller)
Java
// Create a call style notification for an incoming call. Notification.Builder builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forIncomingCall(caller, declineIntent, answerIntent)) .addPerson(incoming_caller);
Utilizza forOngoingCall()
per creare una notifica in stile chiamata per una chiamata in corso.
Kotlin
// Create a call style notification for an ongoing call. val builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forOnGoingCall(caller, hangupIntent)) .addPerson(second_caller)
Java
// Create a call style notification for an ongoing call. Notification.Builder builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forOnGoingCall(caller, hangupIntent)) .addPerson(second_caller);
Utilizza forScreeningCall()
per creare una notifica di stile chiamata per lo screening di una chiamata.
Kotlin
// Create a call style notification for screening a call. val builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent)) .addPerson(second_caller)
Java
Notification.Builder builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent)) .addPerson(second_caller);
Supporto delle immagini avanzate per le notifiche
In Android 12, ora puoi migliorare l'esperienza di notifica della tua app fornendo immagini animate nelle notifiche MessagingStyle()
e BigPictureStyle()
. Inoltre, ora la tua app può consentire agli utenti di inviare messaggi con immagini quando
rispondono ai messaggi dalla barra delle notifiche.
Miglioramenti della modalità immersiva per la navigazione tramite gesti
Android 12 consolida il comportamento esistente per consentire agli utenti di eseguire comandi di navigazione tramite gesti in modalità immersiva. Inoltre, Android 12 offre un comportamento di compatibilità con le versioni precedenti per la modalità immersiva persistente.
Condivisione degli URL recenti (solo Pixel)
Sui dispositivi Pixel, gli utenti ora possono condividere i link ai contenuti web visualizzati di recente direttamente dalla schermata Recenti. Dopo aver visitato i contenuti in un'app, l'utente può scorrere fino alla schermata Recenti e trovare l'app in cui ha visualizzato i contenuti, quindi toccare il pulsante del link per copiare o condividere l'URL.
Per maggiori informazioni, vedi Attivare la condivisione degli URL recenti.
Sicurezza e privacy
Dashboard della privacy
Sui dispositivi supportati con Android 12 o versioni successive, nelle impostazioni di sistema viene visualizzata una schermata della dashboard della privacy. In questa schermata, gli utenti possono accedere a schermate separate che mostrano quando le app accedono alle informazioni su posizione, fotocamera e microfono. Ogni schermata mostra una cronologia di quando diverse app hanno avuto accesso a un particolare tipo di dati. La Figura 1 mostra la sequenza temporale di accesso ai dati per le informazioni sulla posizione.
La tua app può fornire una motivazione agli utenti per aiutarli a capire perché la tua app accede alle informazioni su posizione, fotocamera o microfono. Questa motivazione può essere visualizzata nella nuova schermata della dashboard della privacy, nella schermata delle autorizzazioni dell'app o in entrambe.
Autorizzazioni Bluetooth
Android 12 introduce le autorizzazioni
BLUETOOTH_SCAN
,
BLUETOOTH_ADVERTISE
,
e
BLUETOOTH_CONNECT
. Queste autorizzazioni semplificano l'interazione delle app che hanno come target
Android 12 con i dispositivi Bluetooth, soprattutto per le app che non
richiedono l'accesso alla posizione del dispositivo.
Aggiornare le dichiarazioni delle autorizzazioni Bluetooth della tua app
Per preparare il tuo dispositivo al targeting di Android 12 o versioni successive, aggiorna la logica della tua app. Anziché dichiarare un insieme legacy di autorizzazioni Bluetooth, dichiara un insieme più moderno di autorizzazioni Bluetooth.
Ricerca del gruppo di autorizzazioni
Su Android 12 o versioni successive, puoi eseguire query su come il sistema organizza le autorizzazioni fornite dalla piattaforma in gruppi di autorizzazioni:
- Per determinare il gruppo di autorizzazioni in cui il sistema ha inserito un'autorizzazione definita dalla piattaforma, chiama
getGroupOfPlatformPermission()
. - Per determinare le autorizzazioni definite dalla piattaforma che il sistema ha inserito in un determinato gruppo di autorizzazioni, chiama
getPlatformPermissionsForGroup()
.
Nascondere le finestre di overlay delle applicazioni
Per dare agli sviluppatori un maggiore controllo su ciò che gli utenti vedono quando interagiscono con l'app dello sviluppatore, Android 12 introduce la possibilità di nascondere le finestre di overlay disegnate dalle app che dispongono dell'autorizzazione SYSTEM_ALERT_WINDOW
.
Dopo aver dichiarato l'autorizzazione
HIDE_OVERLAY_WINDOWS
, un'app può chiamare
setHideOverlayWindows()
per indicare che tutte le finestre di tipo
TYPE_APPLICATION_OVERLAY
devono essere nascoste quando la finestra dell'app è visibile. Le app potrebbero scegliere di farlo
quando visualizzano schermate sensibili, come i flussi di conferma delle transazioni.
Le app che mostrano finestre di tipo TYPE_APPLICATION_OVERLAY
devono prendere in considerazione alternative più adatte al loro caso d'uso, come picture in picture o bolle.
Flag di protezione delle autorizzazioni dei firmatari noti
A partire da Android 12, l'attributo
knownCerts
per le
autorizzazioni a livello di firma
ti consente di fare riferimento ai digest di certificati
di firma noti al momento
della dichiarazione.
La tua app può dichiarare questo attributo e utilizzare il flag knownSigner
per consentire a dispositivi e app di concedere autorizzazioni di firma ad altre app, senza dover firmare le app al momento della produzione e della spedizione del dispositivo.
Attestazione delle proprietà del dispositivo
Android 12 espande l'insieme di app che possono verificare le proprietà del dispositivo contenute in un certificato di attestazione quando queste app generano una nuova chiave.
A partire da Android 9 (livello API 28), i proprietari di criteri del dispositivo (DPO) che utilizzano Keymaster 4.0 o versioni successive possono verificare le proprietà del dispositivo in questi certificati di attestazione. A partire da
Android 12, qualsiasi app che ha come target Android 12 (livello API 31) o versioni successive può eseguire
questa verifica utilizzando il
metodo
setDevicePropertiesAttestationIncluded()
.
Le proprietà del dispositivo generate includono i seguenti campi
Build
:
BRAND
DEVICE
MANUFACTURER
MODEL
PRODUCT
Azioni di notifica sicure per la schermata di blocco
A partire da Android 12, la classe Notification.Action.Builder
supporta il metodo setAuthenticationRequired()
, che consente all'app di richiedere che un dispositivo sia sbloccato prima che l'app richiami una determinata azione di notifica. Questo metodo contribuisce ad aggiungere un
ulteriore livello di sicurezza alle notifiche sui dispositivi bloccati.
Stringhe localizzabili per BiometricPrompt
Android 12 introduce nuove API per aiutarti a migliorare l'esperienza utente di autenticazione biometrica della tua app. La nuova classe nidificata BiometricManager.Strings
include i metodi getButtonLabel()
, getPromptMessage()
e getSettingName()
, che consentono all'app di recuperare un'etichetta del pulsante, un messaggio di richiesta o un nome di impostazione dell'app leggibile e localizzato. Utilizza queste etichette per creare istruzioni più precise
per gli utenti, specifiche per i metodi di autenticazione biometrica
utilizzati, ad esempio "Usa Sblocco con il Volto" o "Usa l'impronta per continuare".
Rilevamento del phishing nelle app di messaggistica (solo Pixel)

Sui Pixel supportati, Android 12 esegue il rilevamento del phishing sui messaggi ricevuti nelle app di messaggistica più diffuse. Il sistema utilizza il machine learning on-device per rilevare attività sospette. Quando viene rilevato, il sistema visualizza una sovrapposizione di sicurezza sull'interfaccia utente dell'app di messaggistica per avvisare gli utenti. Ad esempio, il rilevamento del phishing può avvisare gli utenti dei seguenti potenziali rischi:
- Richieste sospette, ad esempio di inviare un codice, denaro o simili
- URL non attendibili
- Allegati dannosi
- Link ad app dannose
Oltre ad avvisare l'utente, l'overlay consente anche di segnalare un messaggio sospetto e fornire feedback sugli avvisi emessi dal sistema.
Gli sviluppatori possono disattivare questa funzionalità aggiungendo un nuovo tag di metadati che includa
la stringa com.google.android.ALLOW_PHISHING_DETECTION
nei file manifest
delle app. Ad esempio:
<manifest>
<application android:name="com.messagingapp">
<meta-data android:name="com.google.android.ALLOW_PHISHING_DETECTION" android:value="false" />
</application>
</manifest>
Contenuti multimediali
Transcodifica in contenuti multimediali compatibili
A partire da Android 12 (livello API 31), il sistema può transcodificare automaticamente i video HEVC(H.265) e HDR (HDR10 e HDR10+) registrati sul dispositivo in AVC (H.264), un formato ampiamente compatibile con i lettori standard. Sfrutta i codec moderni quando sono disponibili senza sacrificare la compatibilità con le applicazioni meno recenti.
Per ulteriori dettagli, consulta la sezione Transcodifica dei contenuti multimediali compatibili.
Classe di prestazioni
Android 12 introduce uno standard chiamato classe di prestazioni. Una classe di prestazioni specifica le funzionalità hardware oltre i requisiti di base di Android. Ogni dispositivo Android dichiara la classe di prestazioni che supporta. Gli sviluppatori possono controllare la classe di prestazioni del dispositivo in fase di runtime e fornire esperienze aggiornate che sfruttano appieno le funzionalità del dispositivo.
Per ulteriori dettagli, consulta la sezione Classe di rendimento.
Miglioramenti della codifica video
Android 12 definisce un insieme standard di chiavi per controllare il valore del parametro di quantizzazione (QP) per la codifica video, consentendo agli sviluppatori di evitare codice specifico del fornitore.
Le nuove chiavi sono disponibili nell'API
MediaFormat
e anche nella
libreria NDK Media.
A partire da Android 12, i codificatori video applicano una soglia di qualità minima. In questo modo, gli utenti non riscontrano una qualità estremamente bassa durante la codifica dei video con scene complesse.
Focus audio
A partire da Android 12 (livello API 31), quando un'app richiede l'audio focus mentre un'altra app ha il focus e sta riproducendo contenuti, il sistema attenua l'app in riproduzione.
Per ulteriori dettagli, consulta Audio focus in Android 12 e versioni successive.
Aggiornamenti di MediaDrm
Per determinare se è necessario un componente decodificatore sicuro con le
API MediaDrm
attuali, devi seguire questi passaggi:
- Crea un
MediaDrm
. - Apri una sessione per ottenere un ID sessione.
- Crea un
MediaCrypto
utilizzando l'ID sessione. - Chiama il numero
MediaCrypto.requiresSecureDecoderComponent(mimeType)
.
Con i nuovi metodi requiresSecureDecoder(@NonNull String mime)
e
requiresSecureDecoder(@NonNull String mime, @SecurityLevel int level)
puoi determinarlo non appena crei un MediaDrm
.
Fotocamera
Estensioni fornitore Camera2
Molti dei nostri partner produttori di dispositivi hanno creato estensioni della fotocamera personalizzate, come Bokeh, HDR, modalità Notte e altre, che vogliono che le app utilizzino per creare esperienze differenziate sui loro dispositivi. La libreria CameraX supporta già queste estensioni personalizzate del fornitore. In Android 12, queste estensioni del fornitore sono ora esposte direttamente nella piattaforma.
Questa aggiunta aiuta le app con implementazioni complesse di Camera2
a sfruttare le estensioni del fornitore senza dover apportare modifiche significative al codice legacy. Le API Camera2 Extension espongono esattamente
lo stesso insieme di
estensioni di
CameraX, che sono già supportate su molti dispositivi
diversi, quindi puoi utilizzarle senza alcuna
configurazione aggiuntiva.
Per ulteriori informazioni, vedi
CameraExtensionCharacteristics
.
Supporto del sensore della fotocamera Quad Bayer
Molti dispositivi Android oggi vengono forniti con sensori della fotocamera ad altissima risoluzione, in genere con pattern Quad o Nona Bayer, che offrono grande flessibilità in termini di qualità dell'immagine e prestazioni in condizioni di scarsa illuminazione. Android 12 introduce nuove API della piattaforma che consentono alle app di terze parti di sfruttare appieno questi versatili sensori. Le nuove API supportano il comportamento unico di questi sensori e tengono conto del fatto che potrebbero supportare diverse configurazioni e combinazioni di stream quando funzionano in modalità a risoluzione completa o "risoluzione massima" rispetto alla modalità "predefinita".
Grafici e immagini
Fornire alle app l'accesso diretto alle tracce di tombstone
A partire da Android 12, puoi accedere al tombstone nativo dell'app come protocol buffer tramite il metodo ApplicationExitInfo.getTraceInputStream()
. Il buffer del protocollo viene serializzato utilizzando questo schema.
In precedenza, l'unico modo per accedere a queste informazioni era tramite
Android Debug Bridge (adb).
Per saperne di più, vedi Fornire alle app l'accesso diretto alle tracce di tombstone.
Supporto delle immagini AVIF
Android 12 introduce il supporto per le immagini che utilizzano il formato file immagine AV1 (AVIF). AVIF è un formato contenitore per immagini e sequenze di immagini codificate utilizzando AV1. AVIF sfrutta i contenuti codificati all'interno del frame della compressione video. Ciò migliora notevolmente la qualità dell'immagine per le stesse dimensioni del file rispetto ai formati immagine precedenti, come JPEG. Per un'analisi approfondita dei vantaggi di questo formato, consulta il post del blog di Jake Archibald.
Sfocature, filtri colore e altri effetti più semplici
Android 12 aggiunge il nuovo RenderEffect
che applica effetti grafici comuni come sfocature, filtri colore, effetti shader Android
e altro ancora a View
e gerarchie di rendering. Gli effetti possono essere combinati come effetti a catena
(che compongono un effetto interno ed esterno) o effetti combinati. Diversi dispositivi Android
potrebbero supportare o meno la funzionalità a causa della potenza di elaborazione limitata.
Gli effetti possono essere applicati anche all'RenderNode
sottostante
per le View
chiamando il numero View.setRenderEffect(RenderEffect)
.
Per implementare un RenderEffect
:
view.setRenderEffect(RenderEffect.createBlurEffect(radiusX, radiusY, SHADER_TILE_MODE))
Decodifica delle immagini animate native
In Android 12, l'API NDK
ImageDecoder
è stata ampliata
per decodificare tutti i frame e i dati di temporizzazione delle immagini
che utilizzano i formati di file GIF e
WebP animati. Quando è stata introdotta in Android 11, questa API decodificava solo la prima immagine delle animazioni in questi formati.
Utilizza ImageDecoder
anziché librerie di terze parti per ridurre ulteriormente le dimensioni dell'APK e usufruire dei futuri aggiornamenti relativi a sicurezza e prestazioni.
Per maggiori dettagli sull'API, consulta il riferimento API e l'esempio su GitHub.
Connettività
Mantenimento delle app complementari attive
Per supportare la necessità delle app companion di rimanere in esecuzione per gestire il dispositivo, Android 12 introduce API che svolgono le seguenti operazioni:
- Consentono di attivare un'app quando un dispositivo complementare è nel raggio d'azione.
- Garantire che la procedura continui a essere eseguita mentre il dispositivo rimane nel raggio d'azione.
Per utilizzare le API, i tuoi dispositivi devono essere connessi tramite Companion Device
Manager. Per ulteriori
informazioni, consulta
CompanionDeviceManager.startObservingDevicePresence()
e
CompanionDeviceService.onDeviceAppeared()
.
Profili di Gestione dispositivi associati

Le app partner su Android 12 (livello API 31) e versioni successive possono utilizzare i profili dei dispositivi complementari quando si connettono a uno smartwatch. L'utilizzo di un profilo semplifica la procedura di registrazione raggruppando la concessione di un insieme di autorizzazioni specifico per il tipo di dispositivo in un unico passaggio.
Le autorizzazioni raggruppate vengono concesse all'app complementare una volta connesso il dispositivo e durano solo per il periodo di associazione del dispositivo. L'eliminazione dell'app o la rimozione dell'associazione comporta la rimozione delle autorizzazioni.
Per ulteriori informazioni, vedi
AssociationRequest.Builder.setDeviceProfile()
.
Miglioramenti alla stima della larghezza di banda
In Android 12, le funzionalità di stima della larghezza di banda fornite da
getLinkDownstreamBandwidthKbps()
e
getLinkUpstreamBandwidthKbps()
sono migliorate sia per la connettività Wi-Fi che per quella mobile. I valori restituiti ora
rappresentano la velocità effettiva media ponderata nel tempo dell'utente per operatore o SSID Wi-Fi,
tipo di rete e livello del segnale, in tutte le applicazioni sul dispositivo.
In questo modo è possibile ottenere una stima più accurata e realistica del throughput previsto,
fornire stime all'avvio a freddo dell'applicazione e richiedere meno cicli
rispetto all'utilizzo di altri metodi di stima del throughput.
Miglioramenti di Wi-Fi Aware (NAN)
Android 12 introduce alcuni miglioramenti a Wi-Fi Aware:
- Sui dispositivi con Android 12 (livello API 31) e versioni successive, puoi utilizzare il
callback
onServiceLost()
per ricevere un avviso quando la tua app ha perso un servizio rilevato a causa dell'interruzione o dello spostamento fuori dal raggio d'azione del servizio. - Il modo in cui vengono configurati più percorsi dei dati (percorsi dei dati NAN) sta cambiando per diventare più efficiente. Le versioni precedenti utilizzavano la messaggistica L2 per scambiare informazioni peer degli iniziatori, il che introduceva latenza. Sui dispositivi con Android 12 e versioni successive, il risponditore (server) può essere configurato per accettare qualsiasi peer, ovvero non ha bisogno di conoscere in anticipo le informazioni sull'iniziatore. Ciò accelera l'attivazione del percorso dati e consente più collegamenti point-to-point con una sola richiesta di rete.
- Per impedire al framework di rifiutare le richieste di rilevamento o connessione a causa dell'esaurimento delle risorse, sui dispositivi con Android 12 e versioni successive, puoi chiamare
WifiAwareManager.getAvailableAwareResources()
. Il valore restituito di questo metodo consente di ottenere il numero di percorsi dati disponibili, il numero di sessioni di pubblicazione disponibili e il numero di sessioni di iscrizione disponibili.
Connessione peer-to-peer + connessione a internet simultanea
Quando i dispositivi che hanno come target Android 12 (livello API 31) e versioni successive vengono eseguiti su dispositivi con supporto hardware, l'utilizzo di connessioni peer-to-peer non disconnette la connessione Wi-Fi esistente durante la creazione della connessione al dispositivo peer. Per
verificare il supporto di questa funzionalità, utilizza
WifiManager.isMultiStaConcurrencySupported()
.
Attivare lo spegnimento dello schermo per i pagamenti NFC
Nelle app che hanno come target Android 12 e versioni successive, puoi attivare i pagamenti NFC
senza che lo schermo del dispositivo sia acceso impostando
requireDeviceScreenOn
su
false
. Per ulteriori informazioni sui pagamenti NFC con lo schermo spento o bloccato, vedi
Comportamento dello schermo spento e della schermata di blocco.
Spazio di archiviazione
Android 12 introduce le seguenti funzionalità di gestione dello spazio di archiviazione:
- Supporto dell'archivio multimediale per
MediaDocumentsProvider
quando l'app recupera un URI multimediale equivalente a un determinato URI del provider di documenti. - Una directory per le registrazioni vocali.
- L'autorizzazione
MANAGE_MEDIA
, che consente a un'app di eseguire operazioni di gestione dei contenuti multimediali senza mostrare una finestra di dialogo di conferma all'utente per ogni operazione. - Le app che dispongono sia dell'autorizzazione
MANAGE_EXTERNAL_STORAGE
sia dell'autorizzazioneQUERY_ALL_PACKAGES
, come le app di gestione dei file, possono richiamare un'attività personalizzata per gestire lo spazio di archiviazione di un'altra app, a condizione che l'altra app crei l'attività personalizzata.
Funzionalità di base
Aggiornamenti automatici delle app
Android 12 introduce il
metodo setRequireUserAction()
per le app che utilizzano l'API
PackageInstaller
.
Questo metodo consente alle app di installazione di eseguire aggiornamenti delle app senza richiedere all'utente di confermare l'azione.
Informazioni sul chipset del dispositivo
Android 12 aggiunge due costanti a android.os.Build
che espongono
le informazioni sul fornitore e sul modello del chipset SoC tramite l'SDK. Puoi recuperare queste
informazioni chiamando rispettivamente Build.SOC_MANUFACTURER
e Build.SOC_MODEL
.
Aggiornamenti alle API Java principali
In base alle richieste e alla collaborazione con gli sviluppatori, abbiamo aggiunto le seguenti librerie principali in Android 12:
Corso | API |
---|---|
java.lang.Deprecated
|
|
java.lang.Byte
|
|
java.lang.Short
|
|
java.lang.Math
|
|
java.lang.StrictMath
|
|
java.util.Set
|
copyOf()
|
java.util.Map
|
copyOf()
|
java.util.List
|
copyOf()
|
java.time.Duration
|
|
java.time.LocalTime
|