Android 13 introduce nuove API e funzionalità fantastiche per gli sviluppatori. Le sezioni riportate di seguito 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 la visibilità. Inoltre, per conoscere le aree in cui le modifiche alla piattaforma potrebbero influire sulle tue app, assicurati di controllare i cambiamenti del comportamento di Android 13 per le app che hanno come target Android 13 e per tutte le app.
Produttività e strumenti per sviluppatori
Icone delle app a tema
A partire da Android 13, puoi attivare le icone delle app a tema. Con questa funzionalità, le icone delle app nei lanci di Android supportati vengono colorate in modo da ereditare la colorazione dello sfondo e di altri temi scelti dall'utente.
Per supportare questa funzionalità, l'app deve fornire sia un'icona adattabile sia un'icona monocromatica e deve indicare l'icona monocromatica dall'elemento <adaptive-icon>
nel file manifest. Se un utente ha attivato le icone delle app a tema (in altre parole, ha attivato l'opzione di attivazione/disattivazione Icone a tema nelle impostazioni di sistema) e il programma di avvio supporta questa funzionalità, il sistema utilizza la colorazione dello sfondo e del tema scelti dall'utente per determinare il colore della tinta, che poi viene applicato all'icona dell'app monocromatica.
Nella schermata Home NON viene visualizzata l'icona dell'app a tema, bensì l'icona dell'app adattiva o standard, nei seguenti casi:
- Se l'utente non ha attivato le icone delle app a tema
- Se la tua app non fornisce un'icona monocromatica dell'app
- Se Avvio app non supporta le icone delle app a tema
Per maggiori dettagli e istruzioni, vedi Icone adattive.
Lingua preferita nelle app
In molti casi, gli utenti multilingue impostano la lingua di sistema su una lingua, ad esempio l'inglese, ma vogliono selezionare altre lingue per app specifiche, ad esempio olandese, cinese o hindi. Per aiutare le app a offrire un'esperienza migliore a questi utenti, Android 13 introduce le seguenti funzionalità per le app che supportano più lingue:
Impostazioni di sistema: una posizione centralizzata in cui gli utenti possono selezionare una lingua preferita per ogni app.
L'app deve dichiarare l'attributo
android:localeConfig
nel file manifest dell'app per indicare al sistema che supporta più lingue. Per scoprire di più, consulta le istruzioni per creare un file di risorse e dichiararlo nel file manifest dell'app.API aggiuntive: queste API pubbliche, come i metodi
setApplicationLocales()
egetApplicationLocales()
inLocaleManager
, consentono alle app di impostare una lingua diversa da quella di sistema in fase di esecuzione.Queste API si sincronizzano automaticamente con le impostazioni di sistema. Pertanto, le app che le utilizzano per creare selettori di lingue in-app personalizzati garantiranno ai propri utenti un'esperienza utente coerente, indipendentemente da dove selezionano le preferenze relative alle lingue. Le API pubbliche ti aiutano anche a ridurre la quantità di codice boilerplate, supportano gli APK divisi e supportano il backup automatico per le app per memorizzare le impostazioni della lingua dell'utente a livello di app.
Per la compatibilità con le versioni precedenti di Android, in AndroidX sono disponibili API equivalenti. Ti consigliamo di utilizzare le API aggiunte in AppCompat 1.6.0-beta01 o versioni successive.
Queste modifiche non interessano le app che non supportano più lingue.
Miglioramento del supporto di testo e lingua
Android 13 include diversi miglioramenti di testo e lingua che ti consentono di offrire un'esperienza più raffinata, descritti nelle sezioni seguenti:
Spartizione in sillabe più rapida
L'inserimento di trattini consente di leggere più facilmente il testo a capo e contribuisce a rendere l'interfaccia utente più adattabile. A partire da Android 13, il rendimento dell'accatastamento è ottimizzato fino al 200%, quindi puoi attivarlo in TextView
con un impatto quasi nullo sul rendimento del rendering. Per attivare l'accatastamento più velocemente, utilizza le frequenze
fullFast
o
normalFast
in
setHyphenationFrequency()
.
API di conversione di testo
Le persone che parlano lingue come il giapponese e il cinese utilizzano metodi di inserimento di lettere fonetiche, che spesso rallentano la ricerca e funzionalità come il completamento automatico. In Android 13, le app possono chiamare la nuova API di conversione del testo in modo che gli utenti possano trovare più facilmente ciò che cercano. In precedenza, ad esempio, un utente giapponese doveva eseguire questa procedura per la ricerca:
- Inserire l'hiragana come pronuncia fonetica del termine di ricerca (ad esempio un luogo o il nome di un'app)
- Usa la tastiera per convertire i caratteri Hiragana in Kanji
- Ripeti la ricerca utilizzando i caratteri Kanji
- Finalmente visualizzano i risultati di ricerca
Con la nuova API di conversione del testo, gli utenti giapponesi possono digitare in hiragana e vedere immediatamente i risultati di ricerca in kanji, saltando i passaggi 2 e 3.
Miglioramento dell'altezza delle righe per gli script non latini
Android 13 migliora la visualizzazione delle scritture non latine (come tamil, birmano, telugu e tibetano) grazie a un'altezza di riga adattata a ogni lingua. Le nuove altezze delle righe impediscono il ritaglio e migliorano il posizionamento dei caratteri. La tua app può usufruire di questi miglioramenti semplicemente scegliendo come target Android 13. Assicurati di testare le app quando utilizzi il nuovo interlinea, perché le modifiche potrebbero influire sull'interfaccia utente nelle lingue diverse dal latino.
Miglioramento del testo a capo in giapponese
A partire da Android 13, le TextView possono a capo il testo in base a bunsetsu (la più piccola unità di parole che suona
naturale) o frasi, anziché per carattere, per applicazioni in giapponese più raffinate e leggibili. Puoi sfruttare questo a capo utilizzando
android:lineBreakWordStyle="phrase"
con TextView.
Aggiornamenti della libreria Unicode
Android 13 aggiunge gli ultimi miglioramenti, correzioni e modifiche incluse in Unicode ICU 70, Unicode CLDR 40 e Unicode 14.0.
Ecco alcune modifiche significative:
- L'inglese (Canada)
en‑CA
e l'inglese (Repubblica delle Filippine)en‑PH
utilizzano entrambi le risorse di traduzione in inglese (Stati Uniti)en
quando non sono disponibili risorse di traduzione al posto dell'inglese (Regno Unito)en‑GB
. - La categoria plurale
many
è stata introdotta per spagnoloes
, italianoit
, portoghesept
e portoghese (Portogallo)pt‑PT
. Simile al francese introdotto nella versione 38 di CLDR, viene utilizzato per numeri di grandi dimensioni.
Colorare i caratteri vettoriali
A partire da Android 13, il sistema include il supporto di rendering per i caratteri COLR 1 (COLRv1) e aggiorna le emoji di sistema al formato COLRv1. COLRv1 è un formato di carattere estremamente compatto che viene visualizzato in modo rapido e nitido in qualsiasi dimensione.
Per la maggior parte delle app, il sistema gestisce tutto e COLRv1 funziona. Tuttavia, se la tua app implementa il proprio rendering del testo e utilizza i caratteri di sistema, ti consigliamo di testare il rendering delle emoji.
Per scoprire di più su COLRv1, consulta le seguenti risorse:
- Annuncio del blog per sviluppatori di Chrome
- Pubblicazione dei caratteri vettoriali a colori COLRv1 in Chrome (video)
- Specifica della tabella COLR
API di posizionamento delle Impostazioni rapide
Le Impostazioni rapide nell'area notifiche consentono agli utenti di modificare facilmente le impostazioni o eseguire azioni rapide senza uscire dal contesto di un'app. Per le app che offrono riquadri personalizzati, stiamo semplificando la scoperta e l'aggiunta dei riquadri alle Impostazioni rapide da parte degli utenti. Con una nuova API di posizionamento dei riquadri, ora la tua app può chiedere all'utente di aggiungere direttamente il riquadro personalizzato all'insieme di riquadri delle Impostazioni rapide attive. Una nuova finestra di dialogo di sistema consente all'utente di aggiungere la scheda in un solo passaggio, senza uscire dall'app, anziché dover andare alle Impostazioni rapide per aggiungerla.
Anteprima appunti
A partire da Android 13, il sistema mostra una conferma visiva standard quando i contenuti vengono aggiunti alla clipboard. La nuova conferma comporta quanto segue:
- Conferma che i contenuti sono stati copiati correttamente.
- Fornisce un'anteprima dei contenuti copiati.
Questa funzionalità standardizza le varie notifiche mostrate dalle app dopo la copia e offre agli utenti un maggiore controllo sulla clipboard. Per ulteriori informazioni, consulta la pagina della funzionalità Copia e incolla.
Gesto Indietro predittivo
Android 13 introduce un gesto Indietro predittivo per i dispositivi Android come smartphone, schermi di grandi dimensioni e pieghevoli. Per supportare questa funzionalità, devi aggiornare l'app.
Per consultare la documentazione dettagliata, vedi Aggiornare l'app per supportare un gesto di scambio predittivo. Puoi anche provare il nostro codelab.
Bluetooth LE audio
L'audio Low Energy (LE) è un audio wireless progettato per sostituire il Bluetooth classico e abilitare determinati casi d'uso e topologie di connessione. Consente agli utenti di condividere e trasmettere i propri contenuti audio ad amici e familiari oppure di iscriversi a trasmissioni pubbliche per informazioni, intrattenimento o accessibilità. È progettata per garantire che gli utenti possano ricevere audio ad alta fedeltà senza sacrificare la durata della batteria e può passare senza problemi da un caso d'uso all'altro che non è possibile con Bluetooth Classic. A partire da Android 13, il sistema include il supporto integrato per LE audio, quindi gli sviluppatori ricevono queste funzionalità senza costi sui dispositivi compatibili.
MIDI 2.0
A partire da Android 13, il sistema include il supporto dello standard MIDI 2.0, inclusa la possibilità di collegare l'hardware MIDI 2.0 tramite USB. Questo standard offre funzionalità come una maggiore risoluzione per i controller, un supporto migliore per l'intonazione non occidentale e un rendimento più espressivo mediante i controller per nota.
Miglioramenti all'efficienza della schermata iniziale
Android 13 migliora l'efficienza delle schermate iniziali animate nell'API SplashScreen:
Il sistema deduce la durata dell'animazione direttamente dal
AnimatedVectorDrawable
. Prima di Android 13, era necessario impostare direttamente il valorewindowSplashScreenAnimationDuration
.Utilizza il nuovo attributo
windowSplashScreenBehavior
per avere un maggiore controllo su se la tua app mostra sempre l'icona nella schermata iniziale su Android 13 e versioni successive.
Per visualizzare la documentazione dettagliata, consulta Schermi di benvenuto.
Ottimizzazioni ART
In Android 13 (livello API 33) e versioni successive, ART semplifica il passaggio al codice nativo e viceversa, con chiamate JNI ora fino a 2,5 volte più veloci. Anche l'elaborazione dei riferimenti di runtime è stata rielaborata per renderla per lo più non bloccante, il che riduce ulteriormente il jitter. Inoltre, puoi utilizzare l'API pubblica
Reference.refersTo()
per recuperare prima gli oggetti non raggiungibili e noterai che
interprete ora è più veloce grazie alle ricerche di classi e metodi ottimizzate. ART esegue inoltre una maggiore verifica byte-code al momento dell'installazione, evitando di dover pagare la verifica in fase di runtime e garantendo tempi di avvio rapidi dell'app.
Privacy e sicurezza
Esportazione più sicura dei destinatari registrati in base al contesto
Per contribuire a rendere più sicuri i receiver di runtime, Android 13 introduce la possibilità per la tua app di specificare se un broadcast receiver registrato deve essere esportato e visibile ad altre app sul dispositivo. Nelle versioni precedenti di Android, qualsiasi app sul dispositivo poteva inviare una trasmissione non protetta a un destinatario registrato dinamicamente, a meno che questo destinatario non fosse protetto da un'autorizzazione di firma.
Questa configurazione di esportazione è disponibile per le app che eseguono almeno una delle seguenti operazioni:
- Usa la classe
ContextCompat
dalla versione 1.9.0 o successive della libreria AndroidX Core. - Target Android 13 o versioni successive.
Selettore di foto
Android 13 (livello API 33) e versioni successive includono un'esperienza di selettore di foto. Quando la tua app avvia il selettore di foto, gli utenti selezionano immagini e video specifici da condividere con la tua app, come le immagini del profilo, anziché concedere alla tua app l'accesso per visualizzare l'intera raccolta multimediale. Questo è il metodo consigliato per accedere a foto e video dell'utente.
Il selettore di foto offre maggiore privacy agli utenti, perché la tua app non deve dichiarare alcuna autorizzazione di runtime. Inoltre, il selettore di foto fornisce un'interfaccia utente standardizzata integrata per le app, che crea un'esperienza utente più coerente.
Nuova autorizzazione di runtime per i dispositivi Wi-Fi nelle vicinanze
Android 13 (livello API 33) introduce una nuova
autorizzazione di runtime nel
gruppo di autorizzazioni NEARBY_DEVICES
per le app che gestiscono le connessioni di un dispositivo ai
punti di accesso nelle vicinanze tramite Wi-Fi. Queste app devono dichiarare la nuova autorizzazione,
NEARBY_WIFI_DEVICES
,
quando
chiamano diverse API Wi-Fi.
Inoltre, a condizione che le app non derivino la posizione fisica dalle API Wi-Fi, non devono dichiarare l'autorizzazione ACCESS_FINE_LOCATION
se hanno come target Android 13 o versioni successive.
Scopri di più sull'autorizzazione per i dispositivi Wi-Fi nelle vicinanze.
Nuova autorizzazione per l'utilizzo delle sveglie esatte
Se la tua app ha come target Android 13 o versioni successive, puoi utilizzare l'autorizzazione
USE_EXACT_ALARM
,
che viene concessa automaticamente all'app. Affinché l'app possa
utilizzare questa autorizzazione, deve soddisfare almeno uno dei seguenti
criteri:
- La tua app è una sveglia o un timer.
- La tua app è un calendario che mostra notifiche per gli eventi imminenti.
Se la tua app imposta sveglie esatte, ma non soddisfa nessuna delle condizioni riportate nell'elenco precedente, continua a dichiarare l'autorizzazione SCHEDULE_EXACT_ALARM
e preparati alla situazione in cui l'utente nega l'accesso alla tua app.
Autorizzazioni rimovibili dagli sviluppatori
A partire da Android 13, la tua app può revocare l'accesso alle autorizzazioni di runtime non utilizzate. Questa API consente alla tua app di eseguire attività di miglioramento della privacy come le seguenti:
- Rimuovi le autorizzazioni inutilizzate.
- Rispetta le best practice per le autorizzazioni, in modo da migliorare la fiducia degli utenti. Ti consigliamo di mostrare agli utenti una finestra di dialogo in cui vengono mostrate le autorizzazioni che hai revocato in modo proattivo.
Schema di firma APK v3.1
Android 13 aggiunge il supporto per lo schema di firma dell'APK v3.1, che migliora lo schema di firma dell'APK v3 esistente. Questo schema risolve alcuni dei problemi noti con lo schema di firma dell'APK v3 in merito alla rotazione. In particolare, lo schema di firma v3.1 supporta il targeting della versione dell'SDK, che consente di scegliere come target una release successiva della piattaforma.
Lo schema di firma v3.1 utilizza un ID blocco non riconosciuto su 12L o versioni precedenti. Pertanto, la piattaforma applica il seguente comportamento del firmatario:
- I dispositivi con Android 13 o versioni successive utilizzano il firmatario ruotato nel blocco v3.1.
- I dispositivi che eseguono versioni precedenti di Android ignorano il firmatario ruotato e utilizzano il firmatario originale nel blocco v3.0.
Le app di cui non è stata ancora ruotata la chiave di firma non richiedono alcun'altra azione. Ogni volta che queste app scelgono di ruotare, il sistema applica per impostazione predefinita lo schema di firma v3.1.
Le app che sono già state ruotate e vogliono continuare a utilizzare la chiave di firma ruotata nel blocco di firma v3.0 devono aggiornare la chiamata a apksigner
:
apksigner sign --ks keystore.jks | --key key.pk8 --cert cert.x509.pem --rotation-min-sdk-version API_LEVEL [signer_options] app-name.apk
...dove API_LEVEL
è pari o inferiore a 32.
Migliore segnalazione degli errori in Keystore e KeyMint
Per le app che generano chiavi, Keystore e KeyMint ora forniscono indicatori di errore più dettagliati e accurati. Abbiamo aggiunto una gerarchia di classi di eccezione in java.security.ProviderException
, con eccezioni specifiche per Android che includono codici di errore Keystore/KeyMint e indicano se l'errore può essere ripetuto. Puoi anche modificare i metodi di generazione e utilizzo delle chiavi (firma, crittografia) per generare le nuove eccezioni. Il miglioramento dei report degli errori non si limita alla generazione delle chiavi e ora dovrebbe fornirti ciò che ti serve per ritentare la generazione delle chiavi.
Supporto di tablet e schermi di grandi dimensioni
Android 13 si basa sulle ottimizzazioni per tablet introdotte in Android 12 e sul rilascio di funzionalità 12L, tra cui ottimizzazioni per l'UI di sistema, miglioramento del multitasking e modalità di compatibilità migliorate. Nell'ambito dei test, assicurati che le tue app abbiano un aspetto ottimale su tablet e altri dispositivi con schermi di grandi dimensioni.
Per ulteriori informazioni sulle novità e su cosa testare, consulta la pagina Supporto per tablet e schermi di grandi dimensioni.
Grafica
Shader programmabili
A partire da Android 13, il sistema include il supporto per gli oggetti
RuntimeShader
programmabili, con
comportamento definito utilizzando il linguaggio di shading grafico Android
(AGSL). AGSL condivide gran parte della sintassi con GLSL, ma funziona all'interno del motore di rendering di Android per personalizzare la pittura all'interno della tela di Android e filtrare i contenuti della visualizzazione.
Android utilizza internamente questi shader per implementare effetti di ripple, sfocatura e overscroll elastico.
Android 13 e versioni successive ti consentono di creare effetti avanzati simili per la tua app.
Miglioramenti a Coreografo
Android 13 introduce metodi API pubblici per
Choreographer
e
ASurfaceControl
che
forniscono alle app maggiori informazioni sulle possibili tempistiche dei frame e aggiungono
più contesto a
SurfaceFlinger
informazioni sul ciclo di vita dei frame. Come in precedenza, le app possono pubblicare un callback per Choreographer
e ricevere informazioni sulla sequenza temporale dei frame. In Android 13 (livello API 33), Choreographer
restituisce più possibili tempi di presentazione e le relative scadenze dei frame. Le app possono scegliere la data e l'ora della presentazione e successivamente comunicare la scelta a SurfaceFlinger
. SurfaceFlinger
non tenta di applicare transazioni o
memorizzare i buffer prima del momento di presentazione desiderato.
Fotocamera
Acquisizione video HDR
A partire da Android 13, le API Camera2 supportano l'acquisizione video High Dynamic Range (HDR), che consente di visualizzare in anteprima e registrare i contenuti video HDR utilizzando la fotocamera. Rispetto all'SDR (Standard Dynamic Range), l'HDR offre una gamma più ampia di colori e aumenta la gamma dinamica della componente di luminanza (dagli attuali 100 cd/m2 a 1000 s di cd/m2). Il risultato è una qualità video più simile alla realtà, con colori più intensi, luci più brillanti e ombre più scure.
Per ulteriori informazioni sull'acquisizione video HDR, consulta la documentazione Acquisizione video HDR.
Contenuti multimediali
Audio spaziale
L'audio spaziale è un'esperienza sonora immersiva che rende i contenuti multimediali più realistici per gli utenti. Consulta la nostra documentazione sull'audio spaziale per informazioni dettagliate su come eseguire l'integrazione con questa funzionalità.
Routing audio predittivo
Per aiutare le app multimediali a identificare come verrà indirizzato il loro audio, Android 13
introduce le API Audio Route nella classe AudioManager
. L'API
getAudioDevicesForAttributes()
ti consente di recuperare un elenco di dispositivi che possono essere utilizzati per riprodurre l'audio specificato, mentre l'API
getDirectProfilesForAttributes()
ti aiuta a capire se lo stream audio può essere riprodotto direttamente. Utilizza queste API per determinare il miglior AudioFormat
da utilizzare per la traccia audio.
Accessibilità
Descrizione audio
Android 13 (livello API 33) introduce una nuova preferenza di accessibilità a livello di sistema che consente agli utenti di attivare le descrizioni audio in tutte le app. Una descrizione audio è una traccia audio aggiuntiva che consiste in una voce narrante che parla durante la presentazione, descrivendo ciò che accade sullo schermo durante le pause naturali dell'audio.
Le app possono seguire la preferenza dell'utente per le tracce di descrizione audio eseguendo una query con isAudioDescriptionRequested()
, come mostrato nello snippet di codice seguente:
Kotlin
private lateinit var accessibilityManager: AccessibilityManager // In onCreate(): accessibilityManager = getSystemService(AccessibilityManager::class.java) // Where your media player is initialized if (accessibilityManager.isAudioDescriptionRequested) { // User has requested to enable audio descriptions }
Java
private AccessibilityManager accessibilityManager; // In onCreate(): accessibilityManager = getSystemService(AccessibilityManager.class); // Where your media player is initialized if(accessibilityManager.isAudioDescriptionRequested()) { // User has requested to enable audio descriptions }
Le app possono monitorare la modifica delle preferenze dell'utente aggiungendo un listener a
AccessbilityManager
:
Kotlin
private val listener = AccessibilityManager.AudioDescriptionRequestedChangeListener { enabled -> // Preference changed; reflect its state in your media player } override fun onStart() { super.onStart() accessibilityManager.addAudioDescriptionRequestedChangeListener(mainExecutor, listener) } override fun onStop() { super.onStop() accessibilityManager.removeAudioDescriptionRequestedChangeListener(listener) }
Java
private AccessibilityManager.AudioDescriptionRequestedChangeListener listener = enabled -> { // Preference changed; reflect its state in your media player }; @Override protected void onStart() { super.onStart(); accessibilityManager.addAudioDescriptionRequestedChangeListener(getMainExecutor(), listener); } @Override protected void onStop() { super.onStop(); accessibilityManager.removeAudioDescriptionRequestedChangeListener(listener); }
Funzionalità di base
Aggiornamenti di OpenJDK 11
Android 13 avvia l'aggiornamento delle librerie di base di Android in modo da allinearsi alla release LTS OpenJDK 11 con aggiornamenti delle librerie e supporto del linguaggio Java 11 per gli sviluppatori di applicazioni e piattaforme. Le modifiche alla libreria di base introdotte in Android 13 saranno disponibili anche per i dispositivi Android 12 tramite un aggiornamento di sistema di Google Play al Modulo principale ART.
Android 13 include le seguenti modifiche alle librerie principali:
- Supporto della parola chiave
var
per le variabili locali e come parametri lambda. Nuovi metodi nella classe String:
isBlank()
lines()
repeat()
strip()
stripLeading()
stripTrailing()
Supporto di
Collection.toArray(IntFunction)
per semplificare l'adattamento di una raccolta a un array.Supporto per
ifPresentOrElse()
,isEmpty()
,orElseThrow()
estream()
injava.util
corsiOptional
,OptionalDouble
,OptionalInt
eOptionalLong
.Supporto esteso per
SocketOptions
, incluso il riutilizzo delle prese.Funzionalità
NullReader
,NullWriter
,InputStream
,OutputStream
etransferTo()
Reader
che trasferiscono i caratteri letti a unWriter
.È stata aggiunta la funzionalità di codifica e decodifica dell'URL utilizzando
Charsets
.Funzionalità
Charset
perFileReader
,FileWriter
,PrintStream
ePrintWriter
.Nuove funzioni
transferTo()
,readNBytes()
,readAllBytes()
ewriteBytes()
perByteArrayInput
oOutputStream
eInput
oOutputStream
.Supporto di runtime e compilatore per
java.lang.invoke.VarHandle
.Aggiorna
java.util.concurrent
all'API OpenJDK 11 utilizzandoVarHandle
internamente.
Java e OpenJDK sono marchi o marchi registrati di Oracle e/o delle sue società consociate.