Android 13 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, visita 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 13 per le app che hanno come target Android 13 e per tutte le app.
Produttività e strumenti per gli 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 launcher Android supportati vengono colorate per ereditare la colorazione dello sfondo scelto dall'utente e di altri temi.
Per supportare questa funzionalità, l'app deve fornire sia un'icona adattiva sia un'icona dell'app monocromatica e deve puntare all'icona dell'app monocromatica dall'elemento <adaptive-icon> nel manifest. Se un utente ha attivato le icone delle app a tema (ovvero ha attivato l'opzione Icone a tema nelle impostazioni di sistema) e l'Avvio app supporta questa funzionalità, il sistema utilizza la colorazione dello sfondo e del tema scelti dall'utente per determinare il colore della tinta, che viene poi applicato all'icona dell'app monocromatica.
La schermata Home NON mostra l'icona dell'app a tema, ma mostra l'icona dell'app adattiva o standard in uno dei seguenti scenari:
- Se l'utente non ha attivato le icone delle app a tema
- Se la tua app non fornisce un'icona dell'app monocromatica
- Se il programma di avvio non supporta le icone delle app a tema
Per maggiori dettagli e istruzioni, consulta 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 l'olandese, il cinese o l'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.
La tua app deve dichiarare l'attributo
android:localeConfignel manifest dell'app per comunicare 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 lingua in-app personalizzati garantiranno agli utenti un'esperienza utente coerente, indipendentemente da dove selezionano le preferenze sulla lingua. Le API pubbliche ti aiutano anche a ridurre la quantità di codice boilerplate, supportano gli APK divisi e il backup automatico per le app per archiviare le impostazioni della lingua dell'utente a livello di app.
Per la compatibilità con le versioni precedenti di Android, sono disponibili API equivalenti anche in AndroidX. Ti consigliamo di utilizzare le API aggiunte in Appcompat 1.6.0-beta01 o versioni successive.
Le app che non supportano più lingue non sono interessate da queste modifiche.
Miglioramento del supporto di testo e lingue
Android 13 include diversi miglioramenti relativi a testo e lingua che ti aiutano a offrire un'esperienza più raffinata, descritta nelle sezioni seguenti:
Sillabazione più rapida
La sillabazione semplifica la lettura del testo con ritorno a capo e contribuisce a rendere la UI più adattabile. A partire da Android 13, le prestazioni della sillabazione sono ottimizzate fino al 200%, quindi puoi attivarla in TextView con un impatto quasi nullo sulle prestazioni di rendering. Per attivare una sillabazione più rapida, utilizza le frequenze fullFast o normalFast in setHyphenationFrequency().
API Text Conversion
Le persone che parlano lingue come il giapponese e il cinese utilizzano metodi di immissione di caratteri fonetici, 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 ciò che cercano in modo più rapido e semplice. In precedenza, ad esempio, per eseguire una ricerca, un utente giapponese doveva seguire questi passaggi:
- Inserire gli 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
- Esegui una nuova ricerca utilizzando i caratteri kanji
- Infine, ottengono i risultati di ricerca
Con la nuova API di conversione del testo, gli utenti giapponesi possono digitare in hiragana e visualizzare immediatamente i risultati di ricerca in kanji, saltando i passaggi 2 e 3.
Altezze delle righe migliorate per gli alfabeti non latini
Android 13 migliora la visualizzazione degli alfabeti non latini (come tamil, birmano, telugu e tibetano) utilizzando un'altezza di riga adattata per ogni lingua. Le nuove altezze delle righe impediscono il ritaglio e migliorano il posizionamento dei caratteri. La tua app può sfruttare questi miglioramenti semplicemente scegliendo Android 13 come target. Assicurati di testare le tue app quando utilizzi la nuova interlinea, perché le modifiche potrebbero influire sulla UI nelle lingue non latine.
Testo a capo in giapponese migliorato
A partire da Android 13, le TextView possono andare a capo per Bunsetsu (la più piccola unità di parole che suona naturale) o per frasi, anziché per carattere, per applicazioni giapponesi più raffinate e leggibili. Puoi sfruttare questo ritorno a capo utilizzando
android:lineBreakWordStyle="phrase"
con TextView.
Aggiornamenti della libreria Unicode
Android 13 aggiunge gli ultimi miglioramenti, correzioni e modifiche inclusi in Unicode ICU 70, Unicode CLDR 40 e Unicode 14.0.
Ecco un paio di modifiche importanti:
- Inglese (Canada)
en‑CAe Inglese (Repubblica delle Filippine)en‑PHutilizzano entrambe le risorse di traduzione Inglese (Stati Uniti)enquando non sono disponibili risorse di traduzione, anziché Inglese (Regno Unito)en‑GB. - La categoria plurale
manyè stata introdotta per lo spagnoloes, l'italianoit, il portoghesepte il portoghese (Portogallo)pt‑PT. Analogamente al francese introdotto in CLDR v38, viene utilizzato per i numeri grandi.
Font vettoriali a colori
A partire da Android 13, il sistema include il supporto del rendering per i caratteri COLR versione 1 (COLRv1) e aggiorna le emoji di sistema al formato COLRv1. COLRv1 è un formato di carattere altamente 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 senza problemi. Tuttavia, se la tua app implementa il proprio rendering del testo e utilizza i caratteri del sistema, ti consigliamo di testare il rendering delle emoji.
Per scoprire di più su COLRv1, consulta le seguenti risorse:
- Annuncio sul blog di Chrome for Developers
- Shipping COLRv1 Color Vector Fonts in Chrome (Video)
- Specifica della tabella COLR
API di posizionamento delle Impostazioni rapide
Le Impostazioni rapide nell'area notifiche sono un modo pratico per gli utenti di modificare le impostazioni o eseguire azioni rapide senza uscire dal contesto di un'app. Per le app che forniscono riquadri personalizzati, stiamo semplificando la scoperta e l'aggiunta dei riquadri alle Impostazioni rapide da parte degli utenti. Utilizzando una nuova API di posizionamento dei riquadri, la tua app ora può chiedere all'utente di aggiungere direttamente il tuo riquadro personalizzato all'insieme di riquadri Impostazioni rapide attivi. Una nuova finestra di dialogo di sistema consente all'utente di aggiungere il riquadro in un solo passaggio, senza uscire dall'app, anziché dover andare alle Impostazioni rapide per aggiungere il riquadro.

Anteprima degli appunti
A partire da Android 13, il sistema mostra una conferma visiva standard quando i contenuti vengono aggiunti agli appunti. La nuova conferma esegue le seguenti operazioni:
- 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 sugli appunti. Per ulteriori informazioni, visita 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 Aggiorna l'app per supportare un gesto Indietro 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 consentire determinati casi d'uso e topologie di connessione. Consente agli utenti di condividere e trasmettere l'audio ad amici e familiari o di iscriversi a trasmissioni pubbliche per informazioni, intrattenimento o accessibilità. È progettato per garantire che gli utenti possano ricevere audio ad alta fedeltà senza sacrificare la durata della batteria e possano passare facilmente da un caso d'uso all'altro, cosa 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 hardware MIDI 2.0 tramite USB. Questo standard offre funzionalità come una maggiore risoluzione per i controller, un migliore supporto per l'intonazione non occidentale e un'esecuzione più espressiva utilizzando i controller per nota.
Miglioramenti dell'efficienza della schermata iniziale
Android 13 migliora l'efficienza delle schermate iniziali animate nell'API SplashScreen:
Il sistema deduce la durata dell'animazione direttamente da
AnimatedVectorDrawable. Prima di Android 13, era necessario impostare direttamentewindowSplashScreenAnimationDuration.Utilizza il nuovo attributo
windowSplashScreenBehaviorper un maggiore controllo sulla visualizzazione o meno dell'icona nella schermata iniziale in Android 13 e versioni successive.
Per consultare la documentazione dettagliata, vedi Schermate iniziali.
Ottimizzazioni ART
In Android 13 (livello API 33) e versioni successive, ART velocizza notevolmente il passaggio da e verso il codice nativo, 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, riducendo ulteriormente i jank. Inoltre, puoi utilizzare l'API pubblica Reference.refersTo() per recuperare prima gli oggetti non raggiungibili e noterai che l'interprete è ora più veloce grazie alle ricerche ottimizzate di classi e metodi. ART esegue anche una maggiore verifica del bytecode al momento dell'installazione, evitando i costi della verifica in fase di runtime e mantenendo rapidi i tempi di avvio delle app.
Privacy e sicurezza
Esportazione più sicura dei ricevitori registrati nel 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 ricevitore registrato dinamicamente, a meno che il ricevitore non fosse protetto da un'autorizzazione di firma.
Questa configurazione di esportazione è disponibile per le app che eseguono almeno una delle seguenti operazioni:
- Utilizza la classe
ContextCompatdella 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 con il selettore di foto. Quando l'app avvia il selettore di foto, gli utenti selezionano immagini e video specifici da condividere con l'app, ad esempio le immagini del profilo, anziché concedere all'app l'accesso per visualizzare l'intera raccolta multimediale. Questo è il modo consigliato per accedere alle foto e ai video dell'utente.
Il selettore di foto offre una maggiore privacy per gli utenti perché la tua app non deve dichiarare alcuna autorizzazione di runtime. Inoltre, il selettore di foto fornisce un'interfaccia utente integrata e standardizzata 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, se le app non ricavano la posizione fisica dalle API Wi-Fi, non devono dichiarare l'autorizzazione ACCESS_FINE_LOCATION quando hanno come target Android 13 o versioni successive.
Scopri di più sull'autorizzazione 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 alla tua app. Tuttavia, affinché la tua app possa utilizzare questa autorizzazione, deve soddisfare almeno uno dei seguenti criteri:
- L'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 nessuno dei casi mostrati 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 inutilizzate. Questa API consente alla tua app di eseguire attività che migliorano la privacy, ad esempio:
- Rimuovi le autorizzazioni inutilizzate.
- Rispetta le best practice relative alle autorizzazioni, che migliorano la fiducia degli utenti. Ti consigliamo di mostrare agli utenti una finestra di dialogo con le autorizzazioni che hai revocato in modo proattivo.
Schema di firma dell'APK v3.1
Android 13 aggiunge il supporto dello schema di firma dell'APK v3.1, che migliora lo schema di firma dell'APK v3 esistente. Questo schema risolve alcuni dei problemi noti dello schema di firma dell'APK v3 relativi alla rotazione. In particolare, lo schema di firma v3.1 supporta il targeting della versione dell'SDK, che consente alla rotazione 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 con versioni precedenti di Android ignorano il firmatario ruotato e utilizzano invece il firmatario originale nel blocco v3.0.
Le app che non hanno ancora ruotato la chiave di firma non richiedono ulteriori azioni. Ogni volta che queste app scelgono di ruotare, il sistema applica lo schema di firma v3.1 per impostazione predefinita.
Le app che hanno già eseguito la rotazione e vogliono continuare a utilizzare la chiave di firma ruotata nel blocco di firma v3.0 devono aggiornare la chiamata di 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 è 32 o un valore inferiore.
Miglioramento di Error Reporting 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 eccezioni in java.security.ProviderException, con eccezioni specifiche per Android che includono codici di errore Keystore/KeyMint e se l'errore è ripetibile. Puoi anche modificare i metodi per la generazione e l'utilizzo delle chiavi (firma, crittografia) in modo che generino le nuove eccezioni. La
generazione di report sugli errori migliorata non è limitata alla generazione delle chiavi e ora dovrebbe fornirti
ciò di cui hai bisogno per riprovare a generare le chiavi.
Supporto per 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 la UI di sistema, un multitasking migliore 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 saperne di più 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 un comportamento definito utilizzando l'Android Graphics Shading Language (AGSL). AGSL condivide gran parte della sua sintassi con GLSL, ma funziona all'interno del motore di rendering di Android per personalizzare la pittura all'interno del canvas di Android e il filtro dei contenuti delle visualizzazioni.
Android utilizza internamente questi shader per implementare
effetti di increspatura,
sfocatura
e
overscroll allungato.
Android 13 e versioni successive ti consentono di creare effetti avanzati simili per la tua app.
Miglioramenti di Choreographer
Android 13 introduce metodi API pubblici per
Choreographer e
ASurfaceControl che
forniscono alle app maggiori informazioni sulle possibili cronologie dei frame e aggiungono
più contesto a
SurfaceFlinger
sul ciclo di vita dei frame. Come in precedenza, le app possono
pubblicare un callback
su Choreographer e ricevere informazioni sulla cronologia dei frame. In Android 13 (livello API 33), Choreographer restituisce più tempi di presentazione possibili e le relative scadenze dei frame. Le app possono scegliere l'ora di presentazione e, successivamente, notificare SurfaceFlinger della scelta. SurfaceFlinger non tenta quindi di applicare transazioni o
buffer di latch prima del tempo di presentazione desiderato.
Fotocamera
Acquisizione di video HDR
A partire da Android 13, le API Camera2 supportano l'acquisizione di video High Dynamic Range (HDR), che ti consente di visualizzare l'anteprima e registrare contenuti video HDR utilizzando la fotocamera. Rispetto allo Standard Dynamic Range (SDR), l'HDR offre una gamma di colori più ampia e aumenta la gamma dinamica della componente di luminanza (dagli attuali 100 cd/m2 a migliaia di cd/m2). In questo modo, la qualità video è più vicina alla realtà, con colori più ricchi, punti luce più luminosi e ombre più scure.
Per scoprire di più sull'acquisizione di video HDR, consulta la documentazione sull'acquisizione di video HDR.
Media
Audio spaziale
L'audio spaziale è un'esperienza sonora immersiva che rende i contenuti multimediali più realistici per gli utenti. Per informazioni dettagliate su come eseguire l'integrazione con questa funzionalità, consulta la nostra documentazione sull'audio spaziale.
Routing audio predittivo
Per aiutare le app multimediali a identificare il modo in cui l'audio verrà indirizzato, Android 13
introduce le API di routing audio 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 AudioFormat migliore da utilizzare per la tua 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 di narrazione aggiuntiva che consiste in un narratore 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 inizia il lavoro di aggiornamento delle librerie principali di Android per allinearle alla release OpenJDK 11 LTS 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 Google Play al modulo ART Mainline.
Android 13 include le seguenti modifiche alle librerie principali:
- Supporto della parola chiave
varper 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 di
ifPresentOrElse(),isEmpty(),orElseThrow()estream()nelle classijava.utilOptional,OptionalDouble,OptionalInteOptionalLong.Supporto esteso per
SocketOptions, incluso il riutilizzo dei socket.NullReader,NullWriter,InputStream,OutputStreametransferTo()FunzionalitàReaderche trasferisce i caratteri letti a unWriter.Aggiunta la funzionalità per la codifica e la decodifica degli URL utilizzando
Charsets.Funzionalità
CharsetperFileReader,FileWriter,PrintStreamePrintWriter.Nuove funzioni
transferTo(),readNBytes(),readAllBytes()ewriteBytes()perByteArrayInputoOutputStreameInputoOutputStream.Supporto di runtime e compilatore per
java.lang.invoke.VarHandle.Aggiorna
java.util.concurrentall'API OpenJDK 11 utilizzando internamenteVarHandle.
Java e OpenJDK sono marchi o marchi registrati di Oracle e/o delle sue società consociate.