Android 12 introduce nuove fantastiche funzionalità e API per gli sviluppatori. Le sezioni seguenti descrivono le funzionalità delle tue app e inizia a utilizzare le API correlate.
Per un elenco dettagliato delle API nuove, modificate e rimosse, leggi il report Differenze API. Per informazioni dettagliate sulle nuove API, consulta il riferimento per le API Android: le nuove API sono evidenziate per la visibilità. Inoltre, per scoprire le aree in cui le modifiche alla piattaforma potrebbero influire sulle tue app, assicurati di controllare i cambiamenti del comportamento di Android 12 per le app destinate ad Android 12 e per tutte le app.
Esperienza utente
Material You
Android 12 introduce un nuovo linguaggio di design chiamato Material You, che ti aiuta a creare app più belle e personalizzate. Per implementare tutti gli aggiornamenti più recenti di Material Design 3 nelle tue app, prova una versione alpha dei componenti di Material Design.
Miglioramenti ai widget
Android 12 rinnova l'API Widgets esistente per migliorare l'esperienza di utenti e sviluppatori nella piattaforma e in Avvio app. Abbiamo creato una guida per aiutarti ad assicurarti che il tuo widget sia compatibile con Android 12 e per aggiornarlo con nuove funzionalità.
Per ulteriori informazioni, leggi la sezione Miglioramenti ai widget di Android 12.
Inserimento di contenuti avanzati
Android 12 introduce una nuova API unificata che consente all'app di ricevere contenuti avanzati da qualsiasi origine disponibile: appunti, tastiera o trascinamento.
Per maggiori informazioni, consulta l'articolo Ricevere contenuti avanzati.
API schermate iniziali dell'app
Android 12 introduce una nuova animazione per l'avvio di tutte le app che include un movimento in-app dal momento del lancio, una schermata iniziale che mostra l'icona dell'app e una transizione all'app stessa. Consulta la guida per gli sviluppatori relativa alle schermate iniziali per ulteriori dettagli.
API con 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, consulta la sezione Angoli arrotondati.
Esperienze aptiche avanzate
Android 12 amplia gli strumenti per la creazione di feedback aptico informativo per gli eventi dell'interfaccia utente, effetti coinvolgenti e piacevoli per i giochi e la tecnologia aptica aptica per la produttività.
Effetti dell'attuatore
Android 12 aggiunge effetti espressivi come low tick, che sfruttano la più ampia larghezza di banda di frequenza 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 diversi effetti aptici su più attuatori. Consigliamo agli sviluppatori di utilizzare le costanti e le primitive come componenti di base per gli effetti aptici avanzati, costanti per migliorare gli eventi UI e il compositore aptico per sequenza primitive per effetti più complessi. Queste API possono essere provate sui dispositivi Pixel 4 e stiamo continuando a collaborare con i nostri produttori di dispositivi per offrire il più recente supporto della tecnologia aptica agli utenti di tutto l'ecosistema.
Effetti aptici con audio accoppiato
Le app Android 12 possono generare un feedback aptico derivato da una sessione audio utilizzando la vibrazione del telefono. Ciò offre l'opportunità di esperienze di gioco e audio più coinvolgenti. Ad esempio, le suonerie con tecnologia aptica possono aiutare a identificare i chiamanti oppure un gioco di guida potrebbe simulare la sensazione di terreno accidentato.
Per ulteriori informazioni, consulta la documentazione di riferimento HapticGenerator
.
Ricerca applicazione
Android 12 introduce AppSearch, un motore di ricerca on-device ad alte prestazioni, come servizio di sistema. AppSearch consente alle applicazioni di indicizzare dati strutturati e di eseguire ricerche al loro interno, con funzionalità di ricerca a testo intero integrate. Inoltre, AppSearch supporta le funzionalità di ricerca nativa, come l'indicizzazione e il recupero altamente efficienti, il supporto multilingue e il ranking di pertinenza.
AppSearch è disponibile in due versioni: un indice locale che la tua applicazione può utilizzare, compatibile con le versioni precedenti di Android, o un indice centrale mantenuto per l'intero sistema in Android 12. Utilizzando l'indice centrale, la tua applicazione può consentire la visualizzazione dei suoi dati sulle piattaforme dell'interfaccia utente di sistema dal componente di intelligence preinstallato dal sistema. I dati che vengono visualizzati esattamente sulle piattaforme UI di sistema dipendono dall'OEM. Inoltre, l'applicazione può condividere i dati in modo sicuro con altre applicazioni per consentire anche a loro di eseguire ricerche all'interno di questi dati.
Scopri di più su AppSearch nella guida per gli sviluppatori e inizia a utilizzarlo con la libreria AppSearch Jetpack, che fornisce una piattaforma API a misura di sviluppatore e il supporto per il processore di annotazioni.
Modalità di gioco
L'API per la modalità di gioco e gli interventi per la modalità di gioco ti consentono di ottimizzare il gameplay dando priorità a caratteristiche come le prestazioni o la durata della batteria in base alle impostazioni degli utenti o alle configurazioni specifiche del gioco.
Per ulteriori informazioni, vedi Modalità di gioco.
Consigli e miglioramenti della funzionalità Picture in picture (PIP)
Android 12 introduce i seguenti miglioramenti per la modalità PIP:
Supporto per i nuovi gesti PIP
Android 12 ora supporta i gesti di gesto PiP e pizzica per lo zoom per la finestra PIP:
Per nascondere la finestra, l'utente può trascinarla verso il bordo destro o sinistro. Per annullare l'impilamento della finestra, l'utente può toccare la parte visibile della finestra nascosta o trascinarla fuori.
Ora l'utente può ridimensionare la finestra PIP usando lo zoom pizzicando lo schermo.
Nuove funzionalità consigliate che supportano un'esperienza di transizione PIP migliorata
Android 12 ha aggiunto migliori estetici significativi alle transizioni animate tra le finestre PIP e a schermo intero. Ti consigliamo vivamente di implementare tutte le modifiche applicabili. Dopo averle apportate, queste modifiche vengono automaticamente scalate su schermi di grandi dimensioni, come pieghevoli e tablet, senza ulteriori operazioni.
Le funzionalità sono le seguenti:
Un nuovo flag API per una transizione più fluida alla modalità PIP con la navigazione tramite gesti
Utilizza il flag
setAutoEnterEnabled
per rendere più fluide le transizioni alla modalità PIP quando scorri verso l'alto fino alla schermata Home in modalità di navigazione tramite gesti. In precedenza, Android aspettava il completamento dell'animazione con scorrimento verso la schermata Home prima di dissolversi nella 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 dei contenuti non video
Il flag
SeamlessResizeEnabled
offre un'animazione di dissolvenza incrociata molto più fluida durante il ridimensionamento di contenuti non video nella finestra PIP. In precedenza, il ridimensionamento di contenuti non video in una finestra PIP poteva creare artefatti visivi scioccanti.
Nuove notifiche di chiamata per consentire l'importanza del ranking delle chiamate in arrivo
Android 12 aggiunge il nuovo stile di notifica Notification.CallStyle
per le chiamate. L'uso di questo modello consente alla tua app di indicare l'importanza delle chiamate attive mostrando 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ù critiche per gli utenti, a queste notifiche viene assegnato il ranking migliore nell'area. 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 dello 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 stile di chiamata per filtrare 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 avanzato delle immagini 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, l'app ora può consentire agli utenti di inviare messaggi immagine quando
rispondono ai messaggi dall'area notifiche.
Miglioramenti alla modalità immersiva per la navigazione tramite gesti
Android 12 raggruppa il comportamento esistente per consentire agli utenti di eseguire più facilmente i comandi di navigazione tramite gesti in modalità immersiva. Inoltre, Android 12 fornisce 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 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 li ha visualizzati, quindi toccare il pulsante del link per copiare o condividere l'URL.
Per maggiori informazioni, consulta l'articolo su come abilitare la condivisione di URL recenti.
Sicurezza e privacy
Dashboard della privacy
Sui dispositivi supportati con Android 12 o versioni successive, nelle impostazioni di sistema viene visualizzata la schermata 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 sequenza temporale degli accessi di diverse app a un determinato tipo di dati. La Figura 1 mostra la cronologia di accesso ai dati per le informazioni sulla posizione.
La tua app può fornire una motivazione agli utenti per aiutarli a capire perché l'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 consentono alle app destinate ad Android 12 di interagire con i dispositivi Bluetooth più facilmente, in particolare per le app che non richiedono l'accesso alla posizione del dispositivo.
Aggiornare le dichiarazioni delle autorizzazioni Bluetooth dell'app
Per preparare il dispositivo al targeting di Android 12 o versioni successive, aggiorna la logica della tua app. Anziché dichiarare un set di autorizzazioni Bluetooth legacy, dichiara un set più moderno di autorizzazioni Bluetooth.
Ricerca gruppo di autorizzazioni
Su Android 12 o versioni successive, puoi eseguire query sul modo in cui il sistema organizza le autorizzazioni fornite dalla piattaforma in gruppi di autorizzazioni:
- Per determinare il gruppo di autorizzazioni in cui il sistema ha posizionato 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 finestre overlay dell'applicazione
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 di overlay tracciate 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 decidere di farlo quando mostrano schermate sensibili, ad esempio i flussi di conferma delle transazioni.
Le app che mostrano finestre di tipo TYPE_APPLICATION_OVERLAY
dovrebbero prendere in considerazione delle alternative che potrebbero essere più appropriate per il loro caso d'uso, come la funzionalità Picture in picture o le bolle.
Flag di protezione dell'autorizzazione dei firmatari noti
A partire da Android 12, l'attributo knownCerts
per le autorizzazioni a livello di firma ti consente di fare riferimento alle sintesi 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 il set di app che possono verificare le proprietà dei dispositivi che sono in un certificato di attestazione quando queste app generano una nuova chiave.
A partire da Android 9 (livello API 28), i proprietari dei criteri dei dispositivi (RPD) che utilizzano Keymaster 4.0 o versioni successive possono verificare le proprietà dei dispositivi in questi certificati di attestazione. A partire da Android 12, qualsiasi app destinata ad 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 contribuisce ad aggiungere un ulteriore livello di sicurezza alle notifiche sui dispositivi bloccati.
Stringhe localizzabili per prompt biometrico
Android 12 introduce nuove API per aiutarti a migliorare l'esperienza utente per l'autenticazione biometrica dell'app. La nuova classe nidificata BiometricManager.Strings
include i metodi getButtonLabel()
, getPromptMessage()
e getSettingName()
, che consentono all'app di recuperare un'etichetta di pulsante, un messaggio di richiesta o il nome dell'impostazione dell'app leggibile e localizzata. Usa queste etichette per creare istruzioni più precise
per gli utenti specifiche per i metodi di autenticazione biometrica
utilizzati, ad esempio "Usa lo Sblocco con il Volto" o "Usa la tua impronta per continuare".
Rilevamento del phishing nelle app di messaggistica (solo Pixel)
Sui dispositivi Pixel supportati, Android 12 esegue il rilevamento di phishing per i messaggi ricevuti nelle app di messaggistica più diffuse. Il sistema usa il machine learning sul dispositivo per rilevare le attività sospette. Quando viene rilevato, il sistema mostra un overlay di sicurezza nella UI dell'app di messaggistica per avvisare gli utenti. Ad esempio, il rilevamento di phishing può avvisare gli utenti dei seguenti rischi potenziali:
- Richieste sospette, ad esempio l'invio di un codice, denaro o simili
- URL non attendibili
- Allegati dannosi
- Link ad app dannose
Oltre a avvisare l'utente, l'overlay consente anche di segnalare un messaggio sospetto e fornire feedback sugli avvisi inviati 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 dell'app. Ecco alcuni esempi:
<manifest>
<application android:name="com.messagingapp">
<meta-data android:name="com.google.android.ALLOW_PHISHING_DETECTION" android:value="false" />
</application>
</manifest>
Contenuti multimediali
Transcodifica di 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. Questo sfrutta i codec moderni, se disponibili, senza sacrificare la compatibilità con le applicazioni meno recenti.
Per ulteriori dettagli, consulta la sezione Transcodifica di contenuti multimediali compatibili.
Classe di rendimento
Android 12 introduce uno standard chiamato classe di prestazioni. Una classe di prestazioni specifica funzionalità hardware che vanno oltre i requisiti di base di Android. Ogni dispositivo Android dichiara la classe di prestazioni supportata. 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 Classe di rendimento.
Miglioramenti alla codifica video
Android 12 definisce un set standard di chiavi per il controllo del 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
Raccolta multimediale NDK.
A partire dai codificatori video Android 12, i codificatori video applicano una soglia di qualità minima. In questo modo, gli utenti non avranno una qualità estremamente bassa quando codificano video con scene di complessità elevate.
Focus audio
A partire da Android 12 (livello API 31), quando un'app richiede lo stato attivo sull'audio mentre un'altra app è attiva e in riproduzione, il sistema disattiva la visualizzazione dell'app in riproduzione.
Per maggiori dettagli, consulta Messa a fuoco audio in Android 12 e versioni successive.
Aggiornamenti di MediaDrm
Per determinare se è necessario un componente decoder sicuro con le attuali API MediaDrm
, 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 del fornitore Camera2
Molti dei nostri partner produttori di dispositivi hanno creato estensioni della videocamera personalizzate, ad esempio Bokeh, HDR, modalità notturna e altre, che desiderano utilizzare le app per creare esperienze differenziate sui loro dispositivi. La libreria CameraX supporta già queste estensioni personalizzate dei fornitori. In Android 12, queste estensioni dei fornitori ora sono visibili direttamente nella piattaforma.
Questa aggiunta consente alle app con implementazioni complesse di Camera2
di 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, già supportate su molti
dispositivi diversi, quindi puoi usarle senza
configurazione aggiuntiva.
Per maggiori informazioni, consulta
CameraExtensionCharacteristics
.
Supporto del sensore della fotocamera Quad Bayer
Molti dispositivi Android oggi sono dotati di sensori della fotocamera ad altissima risoluzione, generalmente 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 per le piattaforme che consentono alle app di terze parti di sfruttare appieno questi sensori versatili. Le nuove API supportano il comportamento univoco di questi sensori e tengono conto del fatto che potrebbero supportare configurazioni e combinazioni di stream diverse quando si opera alla massima risoluzione o in modalità a "massima risoluzione" rispetto a quella "predefinita".
Grafica e immagini
Fornisci alle app l'accesso diretto alle tracce dei tombstone
A partire da Android 12, puoi accedere al tombstone degli arresti anomali nativi della tua app come buffer di protocollo tramite il metodo ApplicationExitInfo.getTraceInputStream()
. Il buffer di protocollo è serializzato utilizzando questo schema.
In precedenza, l'unico modo per accedere a queste informazioni era tramite Android Debug Bridge (adb).
Per maggiori informazioni, vedi Fornire alle app l'accesso diretto alle tracce tombstone
Supporto per le immagini AVIF
Android 12 introduce il supporto per le immagini che utilizzano il formato AVIF (AV1 Image File Format). AVIF è un formato container per immagini e sequenze di immagini codificate utilizzando AV1. AVIF sfrutta i contenuti codificati intra-frame della compressione video. Questo migliora notevolmente la qualità delle immagini a parità di dimensioni rispetto a formati immagine meno recenti, come JPEG. Per un'analisi approfondita dei vantaggi di questo formato, vedi il post del blog di Jake Archibald.
Sfocature, filtri colorati e altri effetti più semplici
Android 12 aggiunge la nuova versione RenderEffect
che applica effetti grafici comuni, come sfocature, filtri colore, effetti di tonalità di 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 come effetti misti. Dispositivi Android diversi potrebbero supportare o meno la funzionalità a causa della potenza di elaborazione limitata.
Gli effetti possono essere applicati anche all'elemento RenderNode
sottostante per View
richiamando View.setRenderEffect(RenderEffect)
.
Per implementare un RenderEffect
:
view.setRenderEffect(RenderEffect.createBlurEffect(radiusX, radiusY, SHADER_TILE_MODE))
Decodifica di immagini animate native
In Android 12, l'API NDK
ImageDecoder
è stata ampliata
per decodificare tutti i frame e i dati di tempo da immagini
che utilizzano i formati file GIF animati e
WebP animati. Quando è stata introdotta in Android 11, questa API decodificava solo la prima immagine delle animazioni in questi formati.
Usa ImageDecoder
invece di librerie di terze parti per ridurre ulteriormente le dimensioni degli APK e trarre vantaggio dagli aggiornamenti futuri relativi alla sicurezza e alle prestazioni.
Per maggiori dettagli sull'API, consulta il riferimento API e l'esempio su GitHub.
Connettività
Mantenimento delle app companion attive
Per supportare la necessità di app companion per rimanere in esecuzione per gestire il dispositivo, Android 12 introduce API che:
- Consente di riattivare un'app quando un dispositivo accoppiato è nella portata.
- Assicurati 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 companion. Per ulteriori informazioni, consulta CompanionDeviceManager.startObservingDevicePresence()
e CompanionDeviceService.onDeviceAppeared()
.
Profili Gestione dispositivi associati
Le app partner su Android 12 (livello API 31) e versioni successive possono utilizzare i profili dei dispositivi associati per la connessione 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 in bundle vengono concesse all'app complementare dopo la connessione del dispositivo e durano solo finché il dispositivo è associato. L'eliminazione dell'app o la rimozione dell'associazione comporta la rimozione delle autorizzazioni.
Per maggiori informazioni, consulta
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 per la connettività Wi-Fi e cellulare. I valori restituiti ora rappresentano la velocità effettiva media ponderata complessiva dell'utente per operatore o SSID Wi-Fi, tipo di rete e livello di segnale, in tutte le applicazioni sul dispositivo.
Ciò può restituire una stima più accurata e realistica della velocità effettiva prevista, fornire stime a un avvio a freddo dell'applicazione e richiedere meno cicli rispetto all'utilizzo di altri metodi di stima della velocità effettiva.
Miglioramenti relativi al 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 a causa dell'interruzione del servizio o dello spostamento fuori dal raggio d'azione. - Il modo in cui sono configurati più percorsi dati (NAN Data Paths) sta cambiando per essere più efficiente. Le versioni precedenti utilizzavano la messaggistica L2 per lo scambio di informazioni di peer da chi iniziava, il che comportava la latenza. Sui dispositivi con Android 12 e versioni successive, il risponditore (server) può essere configurato in modo da accettare qualsiasi peer, ovvero non deve conoscere in anticipo le informazioni che l'ha avviata. Ciò accelera la visualizzazione dei percorsi dati e consente più link point-to-point con una sola richiesta di rete.
- Per evitare che il framework rifiuti le richieste di rilevamento o di connessione a causa dell'esaurimento delle risorse, puoi chiamare
WifiAwareManager.getAvailableAwareResources()
sui dispositivi con Android 12 e versioni successive. Il valore restituito di questo metodo consente di ottenere il numero di percorsi di dati disponibili, il numero di sessioni di pubblicazione disponibili e il numero di sessioni di sottoscrizione disponibili.
Peer-to-peer simultanei + connessione a internet
Quando i dispositivi che hanno come target Android 12 (livello API 31) e versioni successive vengono eseguiti su dispositivi che supportano hardware, l'utilizzo delle connessioni peer-to-peer non disconnette la connessione Wi-Fi esistente quando viene creata la connessione al dispositivo peer. Per
verificare l'assistenza per questa funzionalità, utilizza
WifiManager.isMultiStaConcurrencySupported()
.
Attiva schermo disattivato per pagamenti NFC
Nelle app destinate ad Android 12 e versioni successive, puoi attivare i pagamenti NFC
senza che lo schermo del dispositivo sia attivo impostando
requireDeviceScreenOn
su
false
. Per ulteriori informazioni sui pagamenti NFC con lo schermo disattivato o bloccato, consulta
Comportamento schermo spento e blocco schermo.
Spazio di archiviazione
Android 12 introduce le seguenti funzionalità di gestione dello spazio di archiviazione:
- Supporto del media store per
MediaDocumentsProvider
quando la tua app recupera un URI multimediale equivalente all'URI del fornitore di documenti specifico. - 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 all'utente una finestra di dialogo di conferma per ogni operazione. - Le app che dispongono sia dell'autorizzazione
MANAGE_EXTERNAL_STORAGE
sia dell'autorizzazioneQUERY_ALL_PACKAGES
, ad esempio le app di gestione dei file, possono chiamare un'attività personalizzata per la gestione dello 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 usano l'API PackageInstaller
.
Questo metodo consente alle app del programma di installazione di eseguire aggiornamenti dell'app senza richiedere all'utente di confermare l'azione.
Informazioni sul chipset del dispositivo
Android 12 aggiunge a android.os.Build
due costanti 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 di base
In base alle richieste e alla collaborazione con gli sviluppatori, abbiamo aggiunto le seguenti librerie di base 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
|