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 maggiori dettagli sulle nuove API, visita il Riferimento API Android. Le nuove API sono evidenziate per garantire la visibilità. Inoltre, per scoprire le aree in cui le modifiche della piattaforma potrebbero interessare le 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 consente di creare app belle e più personalizzate. Per applicare tutti gli ultimi aggiornamenti 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 sulla piattaforma e in Avvio app. Abbiamo creato una guida per aiutarti a garantire che il tuo widget sia compatibile con Android 12 e per aggiornarlo con nuove funzionalità.
Per ulteriori informazioni, vedi Miglioramenti ai widget Android 12.
Inserimento di contenuti avanzati
Android 12 introduce una nuova API unificata che consente alla tua app di ricevere contenuti avanzati da qualsiasi fonte disponibile: appunti, tastiera o trascinamento.
Per ulteriori informazioni, consulta l'articolo Ricevere contenuti avanzati.
API delle schermate iniziali delle app
Android 12 introduce una nuova animazione per il lancio 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. Per ulteriori dettagli, consulta la guida per gli sviluppatori relativa alle schermate iniziali.
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, vedi Angoli arrotondati.
Esperienze aptiche avanzate
Android 12 amplia gli strumenti per la creazione di feedback aptico informativo per gli eventi UI, gli effetti immersivi e piacevoli per i giochi e la tecnologia aptica attenzionale per la produttività.
Effetti attuatore
Android 12 aggiunge effetti espressivi come il tick basso che sfruttano la larghezza di banda in frequenza più ampia degli attuatori più recenti. Gli sviluppatori di giochi ora possono accedere a più attuatori 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 componenti di base per effetti aptici avanzati, costanti per migliorare gli eventi UI e il compositore aptico per sequenziare le primitive in modo da ottenere effetti più complessi. Queste API sono disponibili per la prova sui dispositivi Pixel 4 e continuiamo a collaborare con i nostri partner produttori di dispositivi per offrire il supporto più recente per la tecnologia aptica agli utenti di tutto l'ecosistema.
Effetti aptici con accoppiamento audio
Le app Android 12 possono generare feedback aptico derivato da una sessione audio utilizzando la vibrazione del telefono. Ciò offre l'opportunità di esperienze di gioco e audio più immersive. Ad esempio, le suonerie con tecnologia aptica avanzata possono aiutare a identificare i chiamanti, mentre un gioco di guida potrebbe simulare la sensazione di terreno accidentato.
Per ulteriori informazioni, consulta la documentazione di riferimento di HapticGenerator
.
Ricerca App
Android 12 introduce AppSearch, un motore di ricerca on-device ad alte prestazioni, come servizio di sistema. AppSearch consente alle applicazioni di indicizzare e cercare dati strutturati con funzionalità incorporate di ricerca a testo intero. Inoltre, AppSearch supporta funzionalità di ricerca native, come l'indicizzazione e il recupero ad alta efficienza, il supporto multilingue e il ranking di pertinenza.
![Diagramma che illustra l'indicizzazione e la ricerca in AppSearch](https://developer.android.com/static/images/about/versions/12/appsearch.png?authuser=7&hl=it)
AppSearch è disponibile in due versioni: un indice locale da utilizzare per l'applicazione compatibile con le versioni precedenti di Android o un indice centrale mantenuto per l'intero sistema in Android 12. Utilizzando l'indice centrale, l'applicazione può consentire la visualizzazione dei propri dati sulle piattaforme UI di sistema da parte del componente di intelligence preinstallato del sistema. I dati esatti che vengono visualizzati sulle piattaforme 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 di eseguire ricerche nei dati.
Scopri di più su AppSearch nella guida per gli sviluppatori e inizia a utilizzarlo con la libreria AppSearch Jetpack, che offre una piattaforma API a misura di sviluppatore e supporto per il processore di annotazioni.
Modalità di gioco
L'API Game Mode e gli interventi per la modalità di 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 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 blocco e pizzicamento per eseguire lo zoom per la finestra PIP:
Per nascondere la finestra, l'utente può trascinarla verso il bordo sinistro o destro. Per rimuovere la finestra dall'archivio, l'utente può toccare la parte visibile della finestra nascosta o trascinarla fuori.
Ora l'utente può ridimensionare la finestra PIP usando le dita per eseguire lo zoom.
Nuove funzionalità consigliate che supportano un'esperienza di transizione PIP migliorata
Android 12 ha aggiunto miglioramenti estetici significativi alle transizioni animate tra finestre a schermo intero e PIP. Ti consigliamo vivamente di implementare tutte le modifiche applicabili. Dopo averlo fatto, le modifiche vengono scalate automaticamente su schermi di grandi dimensioni, come pieghevoli e tablet, senza la necessità di ulteriore intervento.
Le funzionalità sono le seguenti:
-
Utilizza il flag
setAutoEnterEnabled
per offrire transizioni più fluide alla modalità PIP quando scorri verso l'alto per andare a casa in modalità di navigazione tramite gesti. In precedenza, Android attendeva il completamento dell'animazione Scorri fino a casa prima di scomparire 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 sia all'interno che all'uscita dalla modalità PIP.Un nuovo flag dell'API per disattivare il ridimensionamento continuo per i contenuti non video
Il flag
SeamlessResizeEnabled
offre un'animazione di dissolvenza incrociata molto più fluida quando si ridimensionano contenuti non video nella finestra PIP. In precedenza, il ridimensionamento di contenuti non video in una finestra PIP poteva creare artefatti visivi fastidiosi.
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 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 ricevono la prima posizione nella relativa 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 dello 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 dello 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 di immagini avanzate per le notifiche
In Android 12, ora puoi arricchire l'esperienza di notifica della tua app fornendo immagini animate nelle notifiche di 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 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 recente di URL (solo su Pixel)
Sui dispositivi Pixel, gli utenti possono ora 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 maggiori informazioni, vedi Attivare 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 una schermata Dashboard della privacy. In questa schermata, gli utenti possono accedere a schermate separate che mostrano quando le app accedono a informazioni su posizione, fotocamera e microfono. Ogni schermata mostra una sequenza temporale dei momenti in cui diverse app hanno eseguito l'accesso 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é accede a informazioni su posizione, fotocamera o microfono. Questa motivazione può essere visualizzata nella nuova schermata della dashboard della privacy, nella schermata delle autorizzazioni della tua 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 più facilmente con i dispositivi Bluetooth, in particolare per le app che
non richiedono l'accesso alla posizione del dispositivo.
Aggiornare le dichiarazioni delle autorizzazioni Bluetooth della tua app
Per preparare il dispositivo al targeting di Android 12 o versioni successive, aggiorna la logica dell'app. Anziché dichiarare un insieme precedente di autorizzazioni Bluetooth, dichiara un insieme 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 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 finestre di overlay applicazione
Per offrire 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 overlay che sono tracciate dalle app che hanno
l'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 eseguire questa operazione quando vengono visualizzate 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 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 l'insieme di app in grado di verificare le proprietà del dispositivo incluse 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à del dispositivo in questi certificati di attestazione. A partire da Android 12, qualsiasi app che abbia 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 nella schermata di blocco
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 il prompt biometrico
Android 12 introduce nuove API per aiutarti a migliorare l'esperienza utente per l'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 di pulsante, un messaggio di prompt o un nome di impostazione dell'app leggibili e localizzati dall'utente. 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)
![](https://developer.android.com/static/images/about/versions/12/phishing-detection.png?authuser=7&hl=it)
Sui dispositivi Pixel supportati, Android 12 esegue il rilevamento del phishing sui 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 parte superiore dell'interfaccia utente dell'app di messaggistica per avvisare gli utenti. Ad esempio, il rilevamento di phishing può avvisare gli utenti dei seguenti potenziali rischi:
- Richieste sospette, ad esempio l'invio di un codice, denaro o simili
- URL non attendibili
- Allegati dannosi
- Link ad app dannose
Oltre ad avvisare l'utente, l'overlay consente anche all'utente di segnalare un messaggio sospetto e di 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 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 multimediale compatibile
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. Ciò consente di sfruttare i codec moderni, quando sono disponibili, senza sacrificare la compatibilità con le applicazioni meno recenti.
Per ulteriori informazioni, consulta 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 offrire esperienze di categoria superiore 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 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 anche nella libreria multimediale NDK.
A partire dai codificatori video Android 12, viene applicata una soglia di qualità minima. Ciò garantisce che gli utenti non riscontrano una qualità estremamente bassa durante la codifica di video con complessità elevata.
Focus audio
A partire da Android 12 (livello API 31), quando un'app richiede lo stato attivo dell'audio mentre un'altra app è attiva e in riproduzione, il sistema nasconde in dissolvenza l'app in riproduzione.
Per maggiori dettagli, consulta la pagina Audio focus in Android 12 e versioni successive.
Aggiornamenti di MediaDrm
Per determinare se è necessario un componente decoder 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 determinare questo aspetto non appena crei un MediaDrm
.
Fotocamera
Estensioni del fornitore di Fotocamera 2
Molti dei nostri produttori partner di dispositivi hanno creato estensioni della fotocamera personalizzate, ad esempio Bokeh, HDR, modalità notturna e altre, che vorrebbero utilizzare le app per creare esperienze diverse sui loro dispositivi. La libreria CameraX supporta già queste estensioni dei fornitori personalizzate. In Android 12, queste estensioni dei fornitori sono ora esposte 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 precedente. Le API dell'estensione Camera2 espongono esattamente
lo stesso set di
estensioni di CameraX e sono già supportate su molti
dispositivi diversi, quindi puoi utilizzarle senza
altre configurazioni.
Per maggiori informazioni, vedi
CameraExtensionCharacteristics
.
Supporto sensore fotocamera Quad Bayer
Oggi molti dispositivi Android sono dotati di sensori delle fotocamere ad altissima risoluzione, in genere con motivi Quad o Nona Bayer, che offrono grande flessibilità in termini di qualità delle immagini e prestazioni in condizioni di scarsa illuminazione. Android 12 introduce nuove API di piattaforma che consentono alle app di terze parti di sfruttare appieno questi sensori versatili. Le nuove API supportano il comportamento specifico di questi sensori e tengono conto del fatto che potrebbero supportare diverse configurazioni e combinazioni di stream quando vengono utilizzate la modalità a risoluzione massima o "massima risoluzione" rispetto alla modalità "predefinita".
Elementi grafici e immagini
Fornisci alle app l'accesso diretto alle tracce tombali
A partire da Android 12, puoi accedere alla funzionalità tombstone relativa agli arresti anomali nativa 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 ottenere l'accesso a queste informazioni era tramite
Android Debug Bridge (adb).
Per maggiori informazioni, vedi Fornire alle app l'accesso diretto alle tracce tombstone.
Supporto di immagini AVIF
Android 12 introduce il supporto per le immagini che utilizzano il formato AV1 Image File Format (AVIF). AVIF è un formato container per immagini e sequenze di immagini codificate utilizzando AV1. AVIF sfrutta i contenuti codificati intra-frame dalla compressione video. Ciò migliora notevolmente la qualità delle immagini a parità di dimensioni dei file rispetto ai formati più vecchi, come JPEG. Per uno sguardo approfondito sui vantaggi di questo formato, leggi il post del blog di Jake Archibald.
Sfocature più semplici, filtri di colore e altri effetti
Android 12 aggiunge la nuova RenderEffect
che applica effetti grafici comuni, come sfocature, filtri di colore, effetti Shar
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 alla RenderNode
sottostante per View
chiamando 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 sui tempi dalle 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
al posto delle librerie di terze parti per ridurre ulteriormente le dimensioni degli APK e usufruire dei futuri aggiornamenti relativi alla sicurezza e alle prestazioni.
Per maggiori dettagli sull'API, consulta la documentazione di riferimento API e l'esempio su GitHub.
Connettività
Mantenere attive le app complementari
Per far sì che le app complementari rimangano in esecuzione per gestire il dispositivo, Android 12 introduce API che:
- Consente di attivare un'app quando un dispositivo associato è nella portata.
- 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 Companion Device
Manager. Per ulteriori
informazioni, consulta
CompanionDeviceManager.startObservingDevicePresence()
e
CompanionDeviceService.onDeviceAppeared()
.
Profili Gestione dispositivi associati
![](https://developer.android.com/static/images/about/versions/12/companion-device-profile.png?authuser=7&hl=it)
Le app partner su Android 12 (livello API 31) e versioni successive possono utilizzare i profili dei dispositivi associati durante la connessione a uno smartwatch. L'utilizzo di un profilo semplifica il processo di registrazione raggruppando la concessione di un set di autorizzazioni specifico per il tipo di dispositivo in un unico passaggio.
Le autorizzazioni in bundle vengono concesse all'app complementare una volta che il dispositivo si connette e durano solo finché il dispositivo è associato. Se elimini l'app o rimuovi l'associazione, vengono rimosse le autorizzazioni.
Per maggiori informazioni, vedi
AssociationRequest.Builder.setDeviceProfile()
.
Miglioramenti della stima della larghezza di banda
In Android 12, le funzionalità di stima della larghezza di banda fornite da
getLinkDownstreamBandwidthKbps()
e
getLinkUpstreamBandwidthKbps()
sono state migliorate per la connettività sia Wi-Fi che 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 sull'avvio a freddo dell'applicazione e richiedere meno cicli
rispetto all'utilizzo di altri metodi di stima della velocità effettiva.
Miglioramenti apportati a 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 del suo spostamento fuori dal raggio d'azione. - Il modo in cui vengono configurati più percorsi dei dati (NAN Data Paths) sta cambiando per essere più efficiente. Le versioni precedenti utilizzavano la messaggistica L2 per scambiare informazioni sui peer degli iniziatori, il che ha introdotto una latenza. Sui dispositivi con Android 12 e versioni successive, il server di risposta può essere configurato in modo da accettare qualsiasi peer, vale a dire che non ha bisogno di conoscere in anticipo le informazioni dell'iniziatore. Questo accelera il recupero del percorso dei dati e consente più collegamenti point-to-point con una sola richiesta di rete.
- Per evitare che il framework rifiuti 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 ti consente di ottenere il numero di percorsi dei dati disponibili, il numero di sessioni di pubblicazione e le sessioni di sottoscrizione disponibili.
Peer-to-peer simultanea + connessione a internet
Quando i dispositivi che hanno come target Android 12 (livello API 31) e versioni successive vengono eseguiti su dispositivi che supportano l'hardware, l'utilizzo delle connessioni peer-to-peer non disconnette la connessione Wi-Fi esistente durante la creazione della connessione al dispositivo peer. Per
controllare il supporto di questa funzionalità, utilizza
WifiManager.isMultiStaConcurrencySupported()
.
Attiva lo schermo disattivato per i 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 schermo disattivato o bloccato, consulta
Schermo spento e comportamento
schermo di blocco.
Spazio di archiviazione
Android 12 introduce le seguenti funzionalità di gestione dello spazio di archiviazione:
- Supporto dei media store per
MediaDocumentsProvider
quando l'app recupera un URI multimediale equivalente a un determinato URI del fornitore 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
, ad esempio le app di gestione di file, possono richiamare 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 utilizzano l'API PackageInstaller
.
Questo metodo consente alle app che hanno eseguito l'installazione di eseguire aggiornamenti delle app senza richiedere
all'utente di confermare l'azione.
Informazioni del chipset del dispositivo
Android 12 aggiunge due costanti a android.os.Build
che espongono
le informazioni sul fornitore e sul modello di 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
|