Panoramica delle funzionalità e delle API

Android 12 introduce nuove fantastiche funzionalità e API per gli sviluppatori. Le sezioni seguenti ti aiutano a scoprire le funzionalità per le tue app e a iniziare a utilizzare le API correlate.

Per un elenco dettagliato delle API nuove, modificate e rimosse, leggi il report sulle differenze delle API. Per informazioni dettagliate sulle nuove API, consulta il Riferimento API Android, dove 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, assicurati di consultare 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 accattivanti. Per integrare tutti gli ultimi aggiornamenti di Material Design 3 nelle tue app, prova una versione alpha di Material Design Components.

Material You

Miglioramenti ai widget

Android 12 rinnova l'API Widgets esistente per migliorare l'esperienza utente e degli sviluppatori nella piattaforma e nei launcher. Abbiamo creato una guida per aiutarti ad assicurarti che il tuo widget sia compatibile con Android 12 e ad aggiornarlo con nuove funzionalità.

Per saperne di più, 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 saperne di più, consulta Ricevi contenuti avanzati.

API per le schermate iniziali delle app

Android 12 introduce una nuova animazione di avvio per tutte le app che include un movimento di accesso all'app dal punto di avvio, una schermata iniziale che mostra l'icona dell'app e una transizione all'app stessa. Per maggiori dettagli, consulta la guida per gli sviluppatori relativa alle schermate iniziali.

API per gli angoli arrotondati

Android 12 introduce RoundedCorner e WindowInsets.getRoundedCorner(int position), che forniscono il raggio e il punto centrale per gli angoli arrotondati.

Per saperne di più, consulta Angoli arrotondati.

Esperienze tattili avanzate

Android 12 amplia gli strumenti per la creazione di feedback aptici informativi per gli eventi della UI, effetti immersivi e piacevoli per i giochi e aptica di attenzione per la produttività.

Effetti degli attuatori

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 fornire lo stesso effetto in modo sincrono o effetti tattili diversi su più attuatori. Per gli sviluppatori, consigliamo di utilizzare le costanti e le primitive come elementi di base per effetti tattili avanzati: le costanti per migliorare gli eventi dell'interfaccia utente e Haptic Composer per sequenziare le primitive 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 dell'ecosistema il supporto più recente per la tecnologia aptica.

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, l'esperienza di gioco e audio è più immersiva. Ad esempio, le suonerie con feedback aptico possono aiutare a identificare chi chiama, mentre un gioco di guida potrebbe simulare la sensazione di un terreno accidentato.

Per ulteriori informazioni, consulta la documentazione di riferimento di HapticGenerator.

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 il ranking di pertinenza.

Diagramma che illustra l'indicizzazione e la ricerca in AppSearch

AppSearch è disponibile in due versioni: un indice locale che l'applicazione può utilizzare, 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 della UI di sistema da parte del componente di intelligence preinstallato del sistema. I dati esatti visualizzati sulle superfici della UI di sistema dipendono dall'OEM. Inoltre, la tua applicazione può condividere in modo sicuro i dati con altre applicazioni, per consentire anche a queste ultime di eseguire ricerche 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 facile da usare per gli sviluppatori e il supporto del processore di annotazioni.

Modalità di gioco

L'API Game Mode e gli interventi di Game Mode 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 saperne di più, consulta Modalità Gioco.

Consigli e miglioramenti per Picture in picture (PIP)

Android 12 introduce i seguenti miglioramenti per la modalità PiP:

Supporto di nuovi gesti PiP

Android 12 ora supporta i gesti di stashing e pizzica per aumentare lo zoom per la finestra PiP:

  • Per nascondere la finestra, l'utente può trascinarla verso il bordo sinistro o destro. Per ripristinare la finestra, l'utente può toccare la parte visibile della finestra archiviata o trascinarla verso l'esterno.

  • Ora l'utente può ridimensionare la finestra PiP utilizzando la funzionalità di pizzicamento per lo zoom.

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 si adattano automaticamente agli schermi di grandi dimensioni, come quelli di pieghevoli e tablet, senza ulteriori interventi.

Queste funzionalità sono le seguenti:

Nuovi avvisi 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 alla tua app di indicare l'importanza delle chiamate attive mostrando un chip ben visibile che indica 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à più alta nell'area di notifica. Questo ranking consente inoltre al sistema di inoltrare potenzialmente queste chiamate prioritarie 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 di stile di 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 di stile di 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 tipo chiamata per il filtro delle chiamate.

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 di immagini avanzate per le notifiche

In Android 12, ora puoi arricchire l'esperienza di notifica della tua app fornendo immagini animate nelle notifiche MessagingStyle() e BigPictureStyle(). Inoltre, la tua app ora può consentire agli utenti di inviare messaggi immagine quando rispondono ai messaggi dall'area notifiche.

Miglioramenti della modalità immersiva per la navigazione tramite gesti

Android 12 consolida il comportamento esistente per consentire agli utenti di eseguire più facilmente i comandi di navigazione tramite gesti in modalità immersiva. Inoltre, Android 12 offre un comportamento di compatibilità con le versioni precedenti per la modalità immersiva fissa.

Condivisione di URL recenti (solo Pixel)

Sui dispositivi Pixel, gli utenti ora possono condividere link a 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 saperne di più, consulta Attiva la condivisione degli URL recenti.

Sicurezza e privacy

Dashboard della privacy

Una sequenza temporale verticale mostra le diverse app che hanno
         eseguito l'accesso ai dati sulla posizione e l'ora in cui sono avvenuti gli accessi
Figura 1. Schermata di utilizzo della posizione, parte della Dashboard della privacy.

Sui dispositivi supportati con Android 12 o versioni successive, nelle impostazioni di sistema viene visualizzata una schermata della dashboard per la privacy. In questa schermata, gli utenti possono accedere a schermate separate che mostrano quando le app accedono alle informazioni sulla posizione, sulla fotocamera e sul microfono. Ogni schermata mostra una cronologia di quando diverse app hanno eseguito l'accesso a un tipo di dati specifico. La Figura 1 mostra la cronologia di accesso ai dati sulla posizione.

La tua app può fornire una motivazione agli utenti per aiutarli a capire perché accede alle informazioni sulla posizione, sulla fotocamera o sul 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 con i dispositivi Bluetooth per le app destinate ad Android 12, in particolare per le app che non richiedono l'accesso alla posizione del dispositivo.

Aggiorna le dichiarazioni delle autorizzazioni Bluetooth della tua app

Per preparare il tuo dispositivo per il targeting di Android 12 o versioni successive, aggiorna la logica dell'app. Anziché dichiarare un insieme di autorizzazioni Bluetooth legacy, dichiara un insieme di autorizzazioni Bluetooth più moderno.

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().

Nascondi le finestre di overlay delle applicazioni

Per offrire agli sviluppatori un maggiore controllo su ciò che gli utenti vedono quando interagiscono con la loro app, Android 12 introduce la possibilità di nascondere le finestre in 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 mostrano schermate sensibili, come i flussi di conferma delle transazioni.

Le app che mostrano finestre di tipo TYPE_APPLICATION_OVERLAY dovrebbero prendere in considerazione alternative che potrebbero essere più appropriate per il 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 consente di fare riferimento ai digest dei 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 presenti in un certificato di attestazione quando queste app generano una nuova chiave.

A partire da Android 9 (livello API 28), i proprietari di policy per i dispositivi (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 per la schermata di blocco sicura

A partire da Android 12, la classe Notification.Action.Builder supporta il metodo setAuthenticationRequired(), che consente alla tua app di richiedere che un dispositivo sia sbloccato prima che l'app richiami una determinata azione di notifica. Questo metodo consente di 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 alla tua app di recuperare un'etichetta del pulsante, un messaggio di richiesta o un nome dell'impostazione dell'app localizzati e leggibili dall'utente. Utilizza queste etichette per creare istruzioni più precise rivolte agli utenti, specifiche per i metodi di autenticazione biometrica utilizzati, ad esempio "Utilizza lo Sblocco con il Volto" o "Utilizza l'impronta per continuare".

Media

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 player standard. In questo modo, puoi sfruttare i codec moderni quando sono disponibili senza sacrificare la compatibilità con le applicazioni meno recenti.

Per maggiori dettagli, consulta la sezione Transcodifica in contenuti multimediali compatibili.

Classe di prestazioni

Android 12 introduce uno standard chiamato classe di prestazioni. Una classe di prestazioni specifica le funzionalità hardware che vanno 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 saperne di più, consulta Classe di prestazioni.

Miglioramenti della codifica video

Android 12 definisce un set standard di chiavi per controllare il valore del parametro di quantizzazione (QP) per la codifica video, consentendo agli sviluppatori di evitare il codice specifico del fornitore.

Le nuove chiavi sono disponibili nell'API MediaFormat e nella raccolta multimediale NDK.

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 di video con una complessità delle scene elevata.

Focus audio

A partire da Android 12 (livello API 31), quando un'app richiede il focus audio mentre un'altra app ha il focus ed è in riproduzione, il sistema applica la dissolvenza in uscita all'app in riproduzione.

Per maggiori dettagli, consulta Audio focus in Android 12 and higher.

Aggiornamenti di MediaDrm

Per determinare se è necessario un componente di decodifica sicuro con le API MediaDrm attuali, devi seguire questi passaggi:

  1. Crea un MediaDrm.
  2. Apri una sessione per ottenere un ID sessione.
  3. Crea un MediaCrypto utilizzando l'ID sessione.
  4. 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 del fornitore Camera2

Molti dei nostri partner produttori di dispositivi hanno creato estensioni della fotocamera personalizzate, come Bokeh, HDR, modalità notturna 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 Camera2 complesse 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 saperne di più, vedi CameraExtensionCharacteristics.

Supporto del sensore della fotocamera Quad Bayer

Oggi molti dispositivi Android sono dotati di sensori della fotocamera ad altissima risoluzione, in genere con pattern Quad o Nona Bayer, che offrono una 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 sensori versatili. 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 operano in modalità a risoluzione massima o "risoluzione massima" rispetto alla modalità "predefinita".

Grafica e immagini

Fornisci alle app l'accesso diretto alle tracce dei tombstone

A partire da Android 12, puoi accedere al tombstone dell'arresto anomalo nativo della tua app come buffer di protocollo tramite il metodo ApplicationExitInfo.getTraceInputStream(). Il buffer di 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ù, consulta Fornisci alle app l'accesso diretto alle tracce dei 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 intra-frame della compressione video. Ciò migliora notevolmente la qualità dell'immagine a parità di dimensioni del file rispetto ai formati immagine precedenti, come JPEG. Per un'analisi approfondita dei vantaggi di questo formato, consulta il blog post 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 di Android Shader e altro ancora a View e gerarchie di rendering. Gli effetti possono essere combinati come effetti concatenati (che compongono un effetto interno ed esterno) o effetti combinati. I diversi dispositivi Android potrebbero non supportare la funzionalità a causa della potenza di elaborazione limitata.

Gli effetti possono essere applicati anche al RenderNode sottostante per View chiamando View.setRenderEffect(RenderEffect).

Per implementare un RenderEffect:

view.setRenderEffect(RenderEffect.createBlurEffect(radiusX, radiusY, SHADER_TILE_MODE))

Decodifica nativa delle immagini animate

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 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 di futuri aggiornamenti relativi a sicurezza e prestazioni.

Per maggiori dettagli sull'API, consulta il Riferimento API e l'esempio su GitHub.

Connettività

Mantenere attive le app complementari

Per supportare la necessità delle app complementari di rimanere in esecuzione per gestire il dispositivo, Android 12 introduce API che:

  • Consentirti di attivare un'app quando un dispositivo complementare è nel raggio d'azione.
  • Garantire che il processo continui a essere eseguito mentre il dispositivo rimane nel raggio d'azione.

Per utilizzare le API, i dispositivi devono essere connessi tramite Gestione dispositivi associati. Per saperne di più, vedi CompanionDeviceManager.startObservingDevicePresence() e CompanionDeviceService.onDeviceAppeared().

Profili di Gestione dispositivi associati

Una finestra di dialogo delle autorizzazioni che utilizza un profilo del dispositivo complementare per richiedere più autorizzazioni in un'unica richiesta.

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 il processo di registrazione raggruppando in un unico passaggio la concessione di un insieme di autorizzazioni specifico per il tipo di dispositivo.

Le autorizzazioni raggruppate vengono concesse all'app complementare una volta che il dispositivo si connette e durano solo finché il dispositivo è associato. L'eliminazione dell'app o la rimozione dell'associazione rimuove le autorizzazioni.

Per saperne di più, 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 di rete mobile. I valori restituiti ora rappresentano la velocità effettiva media ponderata di sempre dell'utente per operatore o SSID Wi-Fi, tipo di rete e livello di segnale, in tutte le applicazioni sul dispositivo. In questo modo, puoi ottenere una stima più accurata e realistica della velocità effettiva prevista, fornire stime su un avvio a freddo della tua applicazione e richiedere meno cicli rispetto all'utilizzo di altri metodi di stima della velocità effettiva.

Miglioramenti di Wi-Fi Aware (NAN)

Android 12 aggiunge 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 perché il servizio è stato interrotto o è fuori portata.
  • La configurazione di più percorsi dei dati (percorsi dei dati NAN) sta cambiando per essere più efficiente. Le versioni precedenti utilizzavano la messaggistica L2 per scambiare informazioni sui peer degli initiator, 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 dell'iniziatore. In questo modo, l'attivazione del percorso dati viene accelerata e vengono abilitati più link 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 dei dati disponibili, il numero di sessioni di pubblicazione disponibili e il numero di sessioni di iscrizione disponibili.

Connessione peer-to-peer e 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().

Attiva lo schermo spento 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 schermo spento o bloccato, consulta Comportamento con schermo spento e schermata di blocco.

Archiviazione

Android 12 introduce le seguenti funzionalità di gestione dello spazio di archiviazione:

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 gli 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 di base in Android 12:

Classe 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