Panoramica di funzionalità e API

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

Utente che attiva le icone delle app a tema
Attivazione delle icone delle app a tema su Android 13

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

Lingue per app nelle impostazioni di sistema

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(): e getApplicationLocales() in LocaleManager, 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:

  1. Inserire Hiragana come pronuncia fonetica del termine di ricerca (ad esempio, luogo o il nome di un'app)
  2. Usa la tastiera per convertire i caratteri Hiragana in Kanji
  3. Effettua ricerche usando i caratteri Kanji
  4. 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.

Le altezze delle righe che erano state ritagliate in Android 12 (sopra) e che ora sono posizionato meglio e non ritagliato in Android 13 (sotto).

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.

Testo a capo in giapponese con stile a frase attivato (sotto) e senza (sopra).

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 spagnolo es, l'italiano it, Portoghese pt e portoghese (Portogallo) pt‑PT. Simile per il francese introdotto in CLDR v38, per i numeri grandi.

Colorare i caratteri vettoriali

Emoji vettoriali COLRv1 (sinistra) ed emoji bitmap (destra)

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:

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.

Una finestra di dialogo che chiede all&#39;utente se vuole aggiungere un riquadro al proprio
          Impostazioni rapide.

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 .

Widget Copia/Incolla
. Nuova interfaccia utente mostrata quando i contenuti vengono inseriti negli appunti.

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 impostare windowSplashScreenAnimationDuration 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:

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.
di Gemini Advanced.

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

Uno shaker animato della AGSL, adattato da Shader GLSL.

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.

Se la tua app utilizza i nuovi metodi Choreographer e SurfaceControl, puoi visualizzare il ciclo di vita del frame dell'app in una traccia Perfetto.

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() e stream() in java.util corsi Optional, OptionalDouble, OptionalInt e OptionalLong.

  • Supporto esteso per SocketOptions, incluso il riutilizzo dei socket.

  • NullReader, NullWriter, InputStream, OutputStream e transferTo() Funzionalità di Reader che trasferiscono i caratteri letti a un elemento Writer.

  • Funzionalità aggiunta per la codifica e decodifica degli URL mediante Charsets.

  • Funzionalità di Charset per FileReader, FileWriter, PrintStream e PrintWriter.

  • Nuovi: transferTo(), readNBytes(), readAllBytes() e writeBytes() funzioni per ByteArrayInput o OutputStream e Input o OutputStream,

  • Supporto di runtime e compilatore per java.lang.invoke.VarHandle.

  • Aggiorna java.util.concurrent all'API OpenJDK 11 utilizzando VarHandle internamente.

Java e OpenJDK sono marchi o marchi registrati di Oracle e/o dei suoi affiliati.