Android 13 introduce nuove fantastiche funzionalità e API per gli sviluppatori. Le sezioni di seguito ti aiuteranno a scoprire le funzionalità delle tue app e a iniziare a usare API correlate.
Per un elenco dettagliato delle API nuove, modificate e rimosse, leggi l' Report delle differenze API. Per maggiori dettagli sulle nuove API visita la documentazione di riferimento delle API Android: le nuove API sono evidenziate per visibilità. Inoltre, per conoscere le aree in cui potrebbero verificarsi modifiche alla piattaforma, influisce sulle tue app, accertati di controllare le modifiche al comportamento di Android 13 per le app che hanno come target Android 13 e per tutti di terze parti.
Produttività e strumenti per sviluppatori
Icone delle app a tema
A partire da Android 13, puoi attivare le icone delle app a tema. Con questo le icone delle app nelle app Avvio app di Android supportate saranno colorate per ereditare colorazione dello sfondo scelto dall'utente e di altri temi.
Per supportare questa funzionalità, la tua app deve fornire sia:
adattiva e un'icona a forma di
l'icona dell'app monocromatica e posiziona il puntatore del mouse sull'icona dell'app monocromatica
<adaptive-icon>
elemento nel manifest. Se un utente ha attivato un'app a tema
(in altre parole, attivato l'opzione di attivazione/disattivazione Icone a tema nelle impostazioni di sistema),
e Avvio app supporta questa funzione, il sistema utilizza la colorazione del
lo sfondo e il tema scelti dall'utente per determinare il colore della tinta, che poi verrà
si applica all'icona dell'app monocromatica.
La schermata Home NON mostra l'icona dell'app a tema, ma mostra l'icona adattiva o standard dell'app, 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 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 del sistema su una sola lingua, ad esempio come l'inglese, ma vuole selezionare altre lingue per app specifiche, ad esempio Olandese, cinese o hindi. Per aiutare le app a offrire un'esperienza migliore per questi agli 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:localeConfig
nel relativo per comunicare al sistema che supporta più lingue. Per ulteriori informazioni vedi le istruzioni per creare un file di risorse e dichiararlo nel file manifest dell'app.API aggiuntive: si tratta di API pubbliche, come
setApplicationLocales()
: egetApplicationLocales()
inLocaleManager
, consenti alle app impostare una lingua diversa dalla lingua di sistema in fase di runtime.Queste API si sincronizzano automaticamente con le impostazioni di sistema; Di conseguenza, le app che usano queste API per creare selettori della lingua in-app personalizzati garantiranno i loro utenti hanno un'esperienza omogenea, indipendentemente da dove selezionano. le loro preferenze di lingua. Le API pubbliche ti aiutano anche a ridurre di codice boilerplate, supportano APK divisi e Backup automatico per le app per archiviare a livello di app impostazioni della lingua dell'utente.
Per la compatibilità con le versioni precedenti di Android, API equivalenti sono disponibili anche su AndroidX. È consigliabile utilizzare le API aggiunto in Appcompat 1.6.0-beta01 o superiore.
Le app che non supportano più lingue non sono interessate da queste modifiche.
Supporto migliorato per testo e lingua
Android 13 include diversi miglioramenti di testo e lingua che consentono di offrire un'esperienza più sofisticata, come descritto nelle sezioni seguenti:
Sillabazione più veloce
La sottolineatura rende il testo a capo più facile da leggere e contribuisce a rendere l'interfaccia utente di più
adattivo. A partire da Android 13, le prestazioni della sillabazione vengono ottimizzate come
fino al 200% per poterla attivare nel tuo TextView
senza quasi intaccare
delle prestazioni di rendering. Per velocizzare la sillabazione, utilizza il
fullFast
o
normalFast
frequenze in
setHyphenationFrequency()
API Text Conversion
Le persone che parlano lingue come il giapponese e il cinese usano la scrittura fonetica metodi di immissione, che spesso rallentano la ricerca e funzioni come completamento. In Android 13, le app possono chiamare la nuova conversione di testo API per consentire agli utenti di trovare che vogliono più velocemente e più facilmente. In precedenza, ad esempio, la ricerca ha richiesto a un utente giapponese di svolgere i seguenti passaggi:
- Inserire Hiragana come pronuncia fonetica del termine di ricerca (ad esempio, luogo o il nome di un'app)
- Usa la tastiera per convertire i caratteri Hiragana in Kanji
- Effettua ricerche usando i caratteri Kanji
- Infine, ottieni i risultati di ricerca
Con la nuova API Text Conversion, gli utenti giapponesi possono digitare Hiragana e vedere subito i risultati della ricerca 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) utilizzando un'altezza della riga adattata a 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 come target Android 13. Assicurati di testare le app quando utilizzi la nuova interlinea perché le modifiche potrebbero influire sulla tua UI nelle lingue non latine.
Testo a capo in giapponese migliorato
A partire da Android 13, TextView può mandare a capo il testo in base a Bunsetsu (la più piccola unità di parole che
naturale) o frasi, anziché per carattere, per renderle più leggibili e rifinite
in giapponese. È possibile trarre vantaggio da questo wrapping 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 un paio di modifiche importanti:
- Inglese (Canada)
en‑CA
e inglese (Repubblica dei Filippine)en‑PH
utilizzano entrambi l'inglese (Stati Uniti)en
risorse di traduzione quando non sono disponibili risorse di traduzione anziché in inglese (Regno Unito)en‑GB
. - La categoria plurale
many
è stata introdotta per lo spagnoloes
, l'italianoit
, Portoghesept
e portoghese (Portogallo)pt‑PT
. Simile per il francese introdotto in CLDR v38, per i numeri grandi.
Colorare i caratteri vettoriali
A partire da Android 13, il sistema include il supporto del rendering per COLR versione 1 (COLRv1) e aggiorna le emoji di sistema nel formato COLRv1. COLRv1 è un modello un formato di carattere compatto che consente un rendering rapido e nitido di qualsiasi dimensione.
Per la maggior parte delle app, il sistema gestisce tutto e COLRv1 funziona correttamente. Tuttavia, Se la tua app implementa il proprio rendering del testo e utilizza i caratteri del sistema, consigliamo di testare il rendering delle emoji.
Per saperne di più su COLRv1, consulta le seguenti risorse:
- Annuncio del blog per gli sviluppatori di Chrome
- Spedizione dei caratteri vettoriali di colori COLRv1 in Chrome (video)
- Specifiche della tabella COLR
API di posizionamento Impostazioni rapide
Le Impostazioni rapide nell'area notifiche consentono agli utenti di modificare impostazioni o eseguire azioni rapide senza uscire dal contesto dell'app. Per le app che forniscono riquadri personalizzati, semplificheremo per gli utenti scoprire e aggiungere i tuoi riquadri al riquadro Impostazioni. Con un nuovo API Tileplacement, l'app può ora chiedere all'utente di aggiungere direttamente il tuo riquadro personalizzato alla insieme di riquadri attivi delle Impostazioni rapide. Una nuova finestra di dialogo di sistema consente all'utente di aggiungere in un solo passaggio, senza uscire dall'app e senza dover accedere Impostazioni per aggiungere il riquadro.
Anteprima appunti
A partire da Android 13, il sistema mostra una conferma visiva standard quando vengono aggiunti agli appunti. 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 sugli appunti. Per ulteriori informazioni, vai alla 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. Il supporto di questa funzione richiede aggiorna l'app.
Per visualizzare la documentazione dettagliata, vedi Aggiornare l'app per supportare una funzionalità predittiva gesto. Puoi anche provare nel nostro codelab.
Bluetooth LE audio
L'audio a bassa energia (LE) è un audio wireless pensato per sostituire Bluetooth Classic e abilitare determinati casi d'uso e topologie di connessione. it consente agli utenti di condividere e trasmettere l'audio ad amici e familiari oppure abbonarsi a trasmissioni pubbliche per ottenere informazioni, intrattenimento o accessibilità. È progettata per garantire che gli utenti possano ricevere audio ad alta fedeltà senza riducendo così la durata della batteria e passare senza problemi da un uso all'altro che non sono possibili con Bluetooth Classic. A partire da Android 13, sistema include il supporto integrato per LE audio, quindi gli sviluppatori ricevono questi senza costi sui dispositivi compatibili.
MIDI 2.0
A partire da Android 13, il sistema include il supporto per lo standard MIDI 2.0, compresa la possibilità di collegare hardware MIDI 2.0 tramite USB. Questo standard offre funzionalità come una maggiore risoluzione per i controller, un miglior supporto intonazione non occidentale ed esibizione più espressiva con l'uso di ciascuna nota controller.
Miglioramenti dell'efficienza della schermata iniziale
Android 13 migliora l'efficienza delle schermate iniziali animate nella schermata iniziale API Screen:
Il sistema deduce la durata dell'animazione direttamente
AnimatedVectorDrawable
. Prima di Android 13, era necessario impostarewindowSplashScreenAnimationDuration
direttamente.Utilizza il nuovo attributo
windowSplashScreenBehavior
per avere un maggiore controllo se la tua app mostra sempre l'icona nella schermata iniziale in Android 13 e superiori.
Per la documentazione dettagliata, vedi Schermate iniziali.
Ottimizzazioni ART
In Android 13 (livello API 33) e versioni successive, ART consente di passare
codice molto più veloce, con le chiamate JNI ora fino a 2,5 volte più veloci. Riferimento runtime
l'elaborazione è stata anche rielaborata per renderla per lo più non bloccante,
riduce i jank. Inoltre, puoi utilizzare
Reference.refersTo()
l'API pubblica per recuperare prima gli oggetti non raggiungibili e noterai
l'interprete è ora più veloce grazie all'ottimizzazione delle ricerche di classi e metodi. Anche ART
esegue una maggiore verifica byte-code al momento dell'installazione, evitando
la verifica in fase di runtime e mantenere rapidi i tempi di avvio delle app.
Privacy e sicurezza
Esportazione più sicura dei ricevitori registrati in contesto
Per contribuire a rendere più sicuri i ricevitori di runtime, Android 13 introduce la la possibilità per la tua app di specificare Broadcast receiver registrato deve essere esportato ed essere visibile ad altre app sul dispositivo. Nelle versioni precedenti di Android, qualsiasi app presente sul dispositivo potrebbe inviare un annuncio non protetto a un un ricevitore registrato dinamicamente a meno che non sia sorvegliato da un l'autorizzazione per la firma.
Questa configurazione per l'esportazione è disponibile nelle app che eseguono almeno una delle seguenti:
- Utilizza la
ContextCompat
dalla versione 1.9.0 o successiva del libreria AndroidX Core. - Scegli come target Android 13 o versioni successive.
Selettore di foto
Android 13 (livello API 33) e versioni successive include un selettore di foto un'esperienza senza intervento manuale. Quando l'app avvia la funzionalità selettore di foto, gli utenti selezionano immagini e video specifici da condividere con la tua app come le immagini del profilo, invece di concedere alla tua app l'accesso per visualizzare l'intera raccolta multimediale. Questo è il metodo consigliato per accedere alle foto e video.
Il selettore di foto offre maggiore privacy agli utenti perché la tua app non devono dichiarare le autorizzazioni di runtime. Inoltre, il selettore di foto offre una UI standardizzata integrata per le app, che crea un ambiente più coerente un'esperienza senza intervento manuale.
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
a punti di accesso vicini tramite Wi-Fi. Queste app devono dichiarare la nuova autorizzazione,
NEARBY_WIFI_DEVICES
,
quando
chiamare diverse API Wi-Fi.
Inoltre, purché le app non rilevino la posizione fisica dalla rete Wi-Fi
API, non devono dichiarare
ACCESS_FINE_LOCATION
quando hanno come target Android 13 o versioni successive.
Scopri di più sulle autorizzazione per i dispositivi Wi-Fi nelle vicinanze.
Nuova autorizzazione per l'uso di sveglie esatte
Se la tua app ha come target Android 13 o versioni successive, puoi utilizzare la
USE_EXACT_ALARM
che viene concessa automaticamente alla tua app. Affinché la tua app
usa questa autorizzazione, ma deve soddisfare almeno uno dei seguenti criteri
di classificazione:
- La tua app è un'app sveglia o un timer.
- La tua app è un'app di calendario che mostra le notifiche per i prossimi eventi.
Se l'app imposta sveglie esatte ma non soddisfa nessuno dei due casi mostrati nella
precedente, continua a dichiarare
SCHEDULE_EXACT_ALARM
ed essere preparati ad affrontare la situazione in cui l'utente nega
l'accesso alla tua app.
Autorizzazioni di cui è possibile eseguire il downgrade
A partire da Android 13, la tua app può revocare l'accesso agli annunci inutilizzati autorizzazioni di runtime. Questa API consente alla tua app di eseguire attività di miglioramento della privacy come le seguenti:
- Rimuovi le autorizzazioni inutilizzate.
- Rispetta le best practice sulle autorizzazioni per rafforzare la fiducia degli utenti. Potresti volere potrebbe essere utile mostrare agli utenti una finestra di dialogo con le autorizzazioni di cui disponi revocati proattivamente.
Schema di firma APK v3.1
Android 13 aggiunge il supporto per lo schema di firma dell'APK v3.1, che migliora l'attuale Schema di firma dell'APK v3. Questo schema risolve alcuni dei problemi noti con lo schema di firma dell'APK v3 relativo alla rotazione. In particolare, la versione 3.1 lo schema di firma supporta il targeting per versione dell'SDK, che consente la rotazione scegliere come target una release successiva della piattaforma.
Lo schema di firma v3.1 utilizza un ID di blocco non riconosciuto 12 litri o inferiore. Pertanto, la piattaforma applica il seguente comportamento dei firmatari:
- I dispositivi con Android 13 o versioni successive utilizzano il firmatario ruotato il blocco v3.1.
- I dispositivi che eseguono versioni precedenti di Android ignorano il firmatario ruotato e utilizza il firmatario originale nel blocco v3.0.
Le app che non hanno ancora ruotato la chiave di firma non richiedono ulteriori informazioni un'azione. Ogni volta che queste app scelgono di ruotare, il sistema applica la versione 3.1 per impostazione predefinita.
App che sono già state ruotate e vogliono continuare a usare la firma a rotazione
nel blocco di firma v3.0 devono aggiornare
apksigner
chiamata:
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 inferiore.
Migliore segnalazione degli errori in Keystore e KeyMint
Per le app che generano chiavi, Keystore e KeyMint ora forniscono
indicatori di errore accurati. Abbiamo aggiunto una gerarchia di classi di eccezioni in
java.security.ProviderException
, tranne per le eccezioni specifiche per Android che includono:
Codici di errore Keystore/KeyMint,
e se l'errore può essere riprovato. Puoi anche modificare i metodi per le chiavi
generazione e uso (firma, crittografia) per generare le nuove eccezioni. La
Il miglioramento della segnalazione degli errori non si limita alla generazione della chiave e ora dovrebbe dare
ciò che serve per ritentare la generazione della chiave.
Supporto per tablet e schermi grandi
Android 13 si basa sulle ottimizzazioni per tablet introdotte in Android 12 e Rilascio di funzionalità di 12L, tra cui ottimizzazioni per l'interfaccia utente di sistema, multitasking migliorato e modalità di compatibilità migliorate. Come parte del test, assicurati che le app appaiono al meglio su tablet e altri dispositivi con schermi di grandi dimensioni.
Per ulteriori informazioni sulle novità e sugli elementi da testare, consulta la Supporto di tablet e schermi di grandi dimensioni .
Grafica
Shader programmabili
A partire da Android 13, il sistema include il supporto delle
RuntimeShader
di oggetti, con
comportamento definito utilizzando l'Android Graphics Shading Language
(AGSL). Condivisioni AGSL
gran parte della sua sintassi con GLSL, ma funziona all'interno del motore di rendering Android per
personalizzare la pittura all'interno dell'area di lavoro di Android e filtrare i contenuti in Visualizza.
Android usa internamente questi strumenti per implementare
effetti a onde,
sfocatura,
e
allarga l'overscroll.
Android 13 e versioni successive ti consentono di creare effetti avanzati simili per i tuoi
dell'app.
Miglioramenti della coreografia
Android 13 introduce metodi API pubblici per
Choreographer
e
ASurfaceControl
che
fornire alle app ulteriori informazioni sulle possibili sequenze temporali dei frame e aggiungere
più contesto per
SurfaceFlinger
sul ciclo di vita del frame. Analogamente a prima, le app possono
pubblica un callback
su Choreographer
e ricevere informazioni sulla sequenza temporale del frame. In Android 13 (API
livello 33), Choreographer
restituisce più orari di presentazione possibili e
le scadenze dei frame corrispondenti. Le app possono scegliere data e ora della presentazione
successivamente
notifica SurfaceFlinger
a scelta. SurfaceFlinger
non tenterà di applicare transazioni o
il buffer prima della data di presentazione desiderata.
Fotocamera
Acquisizione video HDR
A partire da Android 13, API Camera2 supporta l'acquisizione video High Dynamic Range (HDR), che consente di visualizzare in anteprima e registrare contenuti video HDR utilizzando la fotocamera. Rispetto agli annunci dinamici standard Range (SDR), l'HDR offre una gamma più ampia di colori e aumenta la gamma dinamica della componente di luminanza (dagli attuali 100 cd/m2 a 1000s di cd/m2). Ciò si traduce in una qualità video che corrisponde di più alla vita reale, con una maggiore colori, alte luci più luminose e ombre più scure.
Per ulteriori informazioni sull'acquisizione video HDR, consulta le Documentazione relativa all'acquisizione di video HDR.
Contenuti multimediali
Audio spaziale
L'audio spaziale è un'esperienza audio immersiva che riproduce i contenuti multimediali più realistico per gli utenti. Scopri le nostre soluzioni per l'audio spaziale documentazione per i dettagli su come eseguire l'integrazione con questa funzionalità.
Routing audio anticipato
Per aiutare le app multimediali a identificare il routing dell'audio, Android 13
introduce le API di routing audio
AudioManager
. La
getAudioDevicesForAttributes()
L'API consente di recuperare un elenco di dispositivi che possono essere usati per riprodurre
audio specificato e
getDirectProfilesForAttributes()
L'API consente di capire se lo stream audio può essere riprodotto direttamente. Utilizza le funzionalità di
queste API per determinare la soluzione migliore
AudioFormat
da usare per l'audio
traccia.
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. Un audio
descrizione è una traccia narrativa aggiuntiva composta da un narratore che parla
la presentazione, descrivendo cosa sta succedendo sullo schermo durante
pause naturali nell'audio.
Le app possono seguire le preferenze dell'utente in merito alle tracce della descrizione audio
tramite isAudioDescriptionRequested()
,
come mostrato nello snippet di codice riportato di seguito:
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 le modifiche alle 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 allinearsi la release OpenJDK 11 LTS con aggiornamenti della libreria e linguaggio Java 11 per gli sviluppatori di applicazioni e piattaforme. La libreria di base cambia introdotto in Android 13 sarà disponibile anche per i dispositivi Android 12 tramite una Aggiornamento di sistema Google Play al modulo ART Mainline.
Android 13 include le seguenti modifiche alle librerie principali:
- Supporto per la parola chiave
var
per variabili locali e come parametri lambda. Nuovi metodi nella classe String:
isBlank()
lines()
repeat()
strip()
stripLeading()
stripTrailing()
Supporto di
Collection.toArray(IntFunction)
per facilitare l'adattamento di un in un array.Supporto per
ifPresentOrElse()
,isEmpty()
,orElseThrow()
estream()
injava.util
corsiOptional
,OptionalDouble
,OptionalInt
eOptionalLong
.Supporto esteso per
SocketOptions
, incluso il riutilizzo dei socket.NullReader
,NullWriter
,InputStream
,OutputStream
etransferTo()
Funzionalità diReader
che trasferiscono i caratteri letti a un elementoWriter
.Funzionalità aggiunta per la codifica e decodifica degli URL mediante
Charsets
.Funzionalità di
Charset
perFileReader
,FileWriter
,PrintStream
ePrintWriter
.Nuovi:
transferTo()
,readNBytes()
,readAllBytes()
ewriteBytes()
funzioni 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 dei suoi affiliati.