Android 15 introduce nuove funzionalità e API per gli sviluppatori. Le seguenti sezioni riepilogano queste funzionalità per aiutarti a iniziare a utilizzare le API correlate.
Per un elenco dettagliato delle API nuove, modificate e rimosse, leggi il report Differenze API. Per informazioni dettagliate sulle nuove API, consulta 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 esaminare le modifiche al comportamento di Android 15 che interessano le app quando hanno come target Android 15 e le modifiche del comportamento che interessano tutte le app indipendentemente datargetSdkVersion
.
Fotocamera e contenuti multimediali
Android 15 include una serie di funzionalità che migliorano l'esperienza con la fotocamera e con i contenuti multimediali e ti permettono di accedere a strumenti e hardware per aiutare i creator a dare vita alla loro vision su Android.
Controlli della fotocamera in-app
Android 15 aggiunge una nuova estensione per un maggiore controllo sull'hardware della fotocamera e sui suoi algoritmi sui dispositivi supportati:
- Regolazioni avanzate dell'intensità del flash che consentono di controllare con precisione l'intensità del flash in entrambe le modalità
SINGLE
eTORCH
durante l'acquisizione delle immagini.
Controllo del margine di sicurezza HDR
Android 15 sceglie un margine HDR appropriato per le funzionalità sottostanti del dispositivo e la profondità di bit del riquadro. Per le pagine con molti contenuti SDR, ad esempio un'app di messaggistica che mostra una singola miniatura HDR, questo comportamento può finire per influenzare negativamente la luminosità percepita dei contenuti SDR. Android 15 ti consente di controllare il margine HDR con setDesiredHdrHeadroom
per trovare un equilibrio tra i contenuti SDR e HDR.
Controllo del volume
Android 15 introduce il supporto dello standard di volume CTA-2075 per aiutare a evitare incongruenze di volume dell'audio e assicurarsi che gli utenti non debbano regolare costantemente il volume quando si passa da un contenuto all'altro. Il sistema sfrutta le caratteristiche note dei dispositivi di output (cuffie e altoparlanti) insieme ai metadati sul volume disponibili nei contenuti audio AAC per regolare in modo intelligente il volume audio e i livelli di compressione dell'intervallo dinamico.
Per abilitare questa funzionalità, devi assicurarti che i metadati relativi al volume siano disponibili nei tuoi contenuti AAC e attivare la funzionalità della piattaforma nella tua app. A questo scopo, devi creare un oggetto LoudnessCodecController
chiamando il relativo metodo di fabbrica create con l'ID sessione audio dell'elemento AudioTrack
associato. In questo modo, viene avviata automaticamente l'applicazione degli aggiornamenti audio. Puoi passare un elemento OnLoudnessCodecUpdateListener
per modificare o filtrare i parametri di volume prima che vengano applicati a MediaCodec
.
// Media contains metadata of type MPEG_4 OR MPEG_D
val mediaCodec = …
val audioTrack = AudioTrack.Builder()
.setSessionId(sessionId)
.build()
...
// Create new loudness controller that applies the parameters to the MediaCodec
try {
val lcController = LoudnessCodecController.create(mSessionId)
// Starts applying audio updates for each added MediaCodec
AndroidX media3 ExoPlayer verrà aggiornato a breve per sfruttare le
API di LoudnessCodecController
e semplificare l'integrazione delle app.
Aumento luce
Android 15 introduce la funzionalità Migliora Luce scarsa, una nuova modalità di esposizione automatica disponibile sia per la Fotocamera 2 che per l'estensione della fotocamera in modalità notturna. Luce scarsa regola l'esposizione dello stream Anteprima in condizioni di scarsa illuminazione. Questo processo è diverso da come l'estensione della fotocamera per la modalità notturna crea immagini fisse, perché la modalità notturna combina una serie di foto a raffica per creare un'unica immagine migliorata. Anche se la modalità notturna funziona molto bene per creare un'immagine statica, non è in grado di creare un flusso continuo di frame, a differenza di Low Light Boost. Grazie a Low Light Boost, la fotocamera abilita nuove funzionalità, tra cui:
- Fornire un'anteprima migliorata delle immagini per consentire agli utenti di inquadrare meglio le immagini in condizioni di scarsa illuminazione
- Scansione dei codici QR in condizioni di scarsa illuminazione
Se attivi Low Light Boost, la funzionalità si accende automaticamente quando c'è poca luce e si spegne quando c'è più luce.
Le app possono registrare durante lo streaming dell'anteprima in condizioni di scarsa illuminazione per salvare un video con luminosità maggiore.
Per ulteriori informazioni, vedi Migliora Luce scarsa.
Dispositivi MIDI 2.0 virtuali
Android 13 ha aggiunto il supporto della connessione a dispositivi MIDI 2.0 tramite USB, che comunicano tramite UMP (Universal MIDI Packets). Android 15 estende il supporto UMP alle app MIDI virtuali, consentendo alle app di composizione di controllare le app di sintetizzatore come dispositivo MIDI 2.0 virtuale come farebbero con un dispositivo USB MIDI 2.0.
Connettività
Android 15 aggiorna la piattaforma per consentire alla tua app di accedere agli ultimi progressi nel campo della comunicazione.
Supporto satellitare
Android 15 continua a estendere il supporto della piattaforma per la connettività satellitare e include alcuni elementi UI per garantire un'esperienza utente coerente in tutto il panorama della connettività satellitare.
Le app possono utilizzare ServiceState.isUsingNonTerrestrialNetwork()
per rilevare quando un dispositivo è connesso a un satellite, in modo da capire meglio il motivo per cui i servizi di rete completi potrebbero non essere disponibili. Inoltre, Android 15 supporta le app SMS e MMS, nonché le app RCS precaricate per l'utilizzo della connettività satellitare per l'invio e la ricezione di messaggi.
Esperienze NFC più fluide
Android 15 sta lavorando per rendere l'esperienza dei pagamenti contactless più semplice e affidabile, continuando a supportare il solido ecosistema di app NFC di Android. Sui dispositivi supportati, le app possono richiedere al NfcAdapter
di attivare la modalità di osservazione, in cui il dispositivo ascolta ma non risponde ai lettori NFC, inviando il servizio NFC dell'app PollingFrame
oggetti per l'elaborazione. Gli oggetti PollingFrame
possono essere utilizzati per l'autenticazione
prima della prima comunicazione con il lettore NFC, consentendo in molti casi una transazione
con un tocco.
Produttività e strumenti degli sviluppatori
La maggior parte del nostro lavoro per migliorare la produttività si basa su strumenti come Android Studio, Jetpack Compose e Android Jetpack, ma siamo costantemente alla ricerca di modi all'interno della piattaforma per aiutarti a realizzare più facilmente la tua vision.
Miglioramenti ai PDF
Android 15 Developer Preview 2 include un'anteprima dei miglioramenti sostanziali alle API PdfRenderer
. Le app possono incorporare funzionalità avanzate come il rendering di file protetti da password, annotazioni, modifica di moduli, ricerca e selezione con testo. Le ottimizzazioni dei PDF linearizzati sono supportate
per velocizzare la visualizzazione dei PDF locali e ridurre l'utilizzo di risorse.
Il PdfRenderer
è stato spostato in un modulo che può essere aggiornato utilizzando gli aggiornamenti di sistema
Google Play indipendentemente dalla release della piattaforma e stiamo supportando
queste modifiche per tornare ad Android 11 (livello API 30) creando una versione
compatibile pre-Android 15 della piattaforma API, denominata
PdfRendererPreV
.
Apprezziamo il tuo feedback sui miglioramenti che abbiamo apportato alla piattaforma API PdfRenderer
e prevediamo di rendere ancora più semplice l'integrazione di queste API nella tua app con una prossima libreria Android Jetpack.
Perfezionamenti automatici relativi al cambio di lingua
Android 14 ha aggiunto il riconoscimento multilingue sul dispositivo nell'audio con passaggio automatico
da una lingua all'altra, ma questo può causare il mancato rilevamento delle parole,
soprattutto quando le lingue cambiano con meno pause tra le due frasi. Android 15 aggiunge ulteriori controlli per aiutare le app a adattare questo passaggio
al loro caso d'uso.
EXTRA_LANGUAGE_SWITCH_INITIAL_ACTIVE_DURATION_TIME_MILLIS
limita il passaggio automatico all'inizio della sessione audio, mentre
EXTRA_LANGUAGE_SWITCH_MATCH_SWITCHES
disattiva il cambio di lingua dopo un determinato numero di cambi. Queste opzioni sono particolarmente utili se prevedi che durante la sessione verrà parlata una sola lingua che dovrebbe essere rilevata automaticamente.
Controlli granulari dell'interruzione di riga
A partire da Android 15, un elemento TextView
e l'interruzione di riga sottostante possono conservare la porzione di testo specificata nella stessa riga per migliorare la leggibilità. Puoi sfruttare questa personalizzazione dell'interruzione di riga utilizzando il tag <nobreak>
nelle risorse stringa o createNoBreakSpan
. Allo stesso modo, puoi evitare che le parole vengano sillabate utilizzando il tag <nohyphen>
o createNoHyphenationSpan
.
Ad esempio, la seguente risorsa stringa non include un'interruzione di riga e viene visualizzata con il testo "Pixel 8 Pro" che si interrompe in una posizione indesiderata:
<resources>
<string name="pixel8pro">The power and brains behind Pixel 8 Pro.</string>
</resources>
Al contrario, questa risorsa stringa include il tag <nobreak>
, che aggrega la frase "Pixel 8 Pro" e impedisce le interruzioni di riga:
<resources>
<string name="pixel8pro">The power and brains behind <nobreak>Pixel 8 Pro.</nobreak></string>
</resources>
La differenza nel modo in cui queste stringhe vengono visualizzate è mostrata nelle seguenti immagini:
Aggiornamenti di OpenJDK 17
Android 15 continua il lavoro di aggiornamento delle librerie di base di Android per allinearsi alle funzionalità delle ultime release di OpenJDK LTS.
Sono inclusi le funzioni e i miglioramenti principali riportati di seguito:
- Miglioramenti della qualità della vita per i buffer NIO
- Stream
- Altri metodi per
math
estrictmath
- Aggiornamenti dei pacchetti di
util
, tra cuicollection
,map
eset
in sequenza - Assistenza di
ByteBuffer
inDeflater
- Aggiornamenti della sicurezza come
X500PrivateCredential
e aggiornamenti dei token di sicurezza
Queste API vengono aggiornate su oltre un miliardo di dispositivi con Android 12 (livello API 31) e versioni successive tramite gli aggiornamenti di sistema di Google Play, in modo da poter scegliere come target le funzionalità di programmazione più recenti.
Java e OpenJDK sono marchi o marchi registrati di Oracle e/o delle sue società consociate.
Schermi di grandi dimensioni e fattori di forma
Android 15 offre alle tue app il supporto per ottenere il massimo dai fattori di forma di Android, tra cui schermi grandi, pieghevoli e pieghevoli.
Supporto per lo schermo di copertura
La tua app può dichiarare una proprietà utilizzata da Android 15 per
consentire la visualizzazione di Application
o Activity
sulle piccole schermate di copertina dei dispositivi ribaltabili supportati. Queste schermate sono troppo piccole per essere
considerate target compatibili per l'esecuzione delle app per Android, ma la tua app può
attivarne il supporto, rendendo l'app disponibile in più luoghi.
Prestazioni e batteria
Android continua a concentrarsi sull'aiutarti a migliorare le prestazioni e la qualità delle tue app. Android 15 introduce nuove API che aiutano a rendere più efficienti le attività nella tua app, a ottimizzare le prestazioni delle app e a raccogliere informazioni sulle tue app.
API ApplicationStartInfo
Nelle versioni precedenti di Android, l'avvio delle app era un po' un mistero. Era
difficile determinare all'interno dell'app se fosse avviata da uno stato freddo,
caldo o caldo. Era anche difficile sapere quanto tempo trascorreva l'app durante le varie fasi di lancio: fork del processo, chiamata a onCreate
, disegno del primo frame e altro ancora. Quando è stata creata un'istanza della classe Application
, non avevi modo di sapere se l'app veniva avviata da una trasmissione, un fornitore di contenuti, un job, un backup, un avvio completato, una sveglia o una Activity
.
L'API ApplicationStartInfo
su Android 15 offre tutto questo e molto altro. Puoi anche aggiungere timestamp personalizzati al flusso
per raccogliere più facilmente i dati delle tempistiche in un unico posto. Oltre a raccogliere metriche, puoi usare ApplicationStartInfo
per ottimizzare direttamente l'avvio dell'app; ad esempio, puoi eliminare la costosa creazione di istanze di librerie relative all'interfaccia utente all'interno della tua classe Application
all'avvio della tua app a causa di una trasmissione.
Informazioni dettagliate sulle dimensioni dell'app
A partire da Android 8.0 (livello API 26), Android ha incluso l'API StorageStats.getAppBytes
che riassume le dimensioni installate di un'app come un singolo numero di byte, ovvero una somma delle dimensioni dell'APK, delle dimensioni dei file estratti dall'APK e dei file generati sul dispositivo, come il codice compilato in anticipo (AOT). Questo numero non è molto
interessante in termini di come la tua app utilizza lo spazio di archiviazione.
Android 15 aggiunge l'API StorageStats.getAppBytesByDataType([type])
, che ti consente di ottenere informazioni dettagliate sull'utilizzo di tutto questo spazio da parte della tua app, tra cui suddivisioni dei file APK, codice AOT e velocità di velocità, metadati dex, librerie e profili guidati.
Miglioramenti ai database SQLite
Android 15 introduce nuove API SQLite che espongono funzionalità avanzate dal motore SQLite sottostante che hanno come target specifici problemi di prestazioni che possono manifestarsi nelle app.
Gli sviluppatori possono consultare le best practice per le prestazioni SQLite per ottenere il massimo dal loro database SQLite, soprattutto quando si lavora con database di grandi dimensioni o durante l'esecuzione di query sensibili alla latenza.
- Transazioni differite di sola lettura: se emetti transazioni di sola lettura (non includono istruzioni di scrittura), utilizza
beginTransactionReadOnly()
ebeginTransactionWithListenerReadOnly(SQLiteTransactionListener)
per emettere transazioniDEFERRED
di sola lettura. Queste transazioni possono essere eseguite contemporaneamente e, se il database è in modalità WAL, possono essere eseguite contemporaneamente alle transazioniIMMEDIATE
oEXCLUSIVE
. - Conteggi e ID righe: sono state aggiunte nuove API per recuperare il conteggio delle righe modificate o l'ultimo ID riga inserito senza inviare un'altra query.
getLastChangedRowCount()
restituisce il numero di righe che sono state inserite, aggiornate o eliminate dall'istruzione SQL più recente nella transazione corrente, mentregetTotalChangedRowCount()
restituisce il conteggio sulla connessione corrente.getLastInsertRowId()
restituisce il valorerowid
dell'ultima riga da inserire nella connessione corrente. - Istruzioni non elaborate: emettono un'istruzione SQlite non elaborata, ignorando i wrapper di convenienza e qualsiasi altro sovraccarico di elaborazione.
Aggiornamenti di Android Dynamic Performance Framework
Android 15 continua il nostro investimento nell'Android Dynamic Performance Framework (ADPF), un insieme di API che consentono a giochi e app che richiedono prestazioni elevate di interagire in modo più diretto con i sistemi di alimentazione e termici dei dispositivi Android. Sui dispositivi supportati, Android 15 aggiungerà nuove funzionalità ADPF:
- Una modalità di efficienza energetica per le sessioni di suggerimento che indicano che i thread associati dovrebbero preferire il risparmio energetico rispetto alle prestazioni, ottimo per carichi di lavoro in background a lunga esecuzione.
- Le durate di lavoro di GPU e CPU possono essere registrate nelle sessioni hint, consentendo al sistema di regolare insieme le frequenze di CPU e GPU per soddisfare al meglio le esigenze dei carichi di lavoro.
- Soglie di margine termico per interpretare il possibile stato di limitazione termica in base al margine di errore.
Per scoprire di più su come utilizzare l'DPF nelle tue app e nei tuoi giochi, consulta la documentazione.
Privacy
Android 15 include una serie di funzionalità che aiutano gli sviluppatori di app a proteggere la privacy degli utenti.
Rilevamento registrazione dello schermo
Android 15 aggiunge il supporto per le app per rilevare che vengono registrate. Viene richiamato ogni volta che l'app passa da essere visibile a invisibile all'interno di una registrazione dello schermo. Un'app è considerata visibile se vengono registrate attività di proprietà dell'UID del processo di registrazione. In questo modo, se la tua app sta eseguendo un'operazione sensibile, puoi comunicare all'utente che l'operazione è stata registrata.
val mCallback = Consumer<Int> { state ->
if (state == SCREEN_RECORDING_STATE_VISIBLE) {
// We're being recorded
} else {
// We're not being recorded
}
}
override fun onStart() {
super.onStart()
val initialState =
windowManager.addScreenRecordingCallback(mainExecutor, mCallback)
mCallback.accept(initialState)
}
override fun onStop() {
super.onStop()
windowManager.removeScreenRecordingCallback(mCallback)
}
Funzionalità IntentFilter espanse
Android 15 supporta una risoluzione Intent
più precisa tramite UriRelativeFilterGroup
, che contiene un insieme di oggetti UriRelativeFilter
che formano un insieme di regole di corrispondenza Intent
che devono essere soddisfatte singolarmente, inclusi i parametri di query dell'URL, i frammenti di URL e le regole di blocco o di esclusione.
Queste regole possono essere definite nel file XML AndroidManifest
con il nuovo tag <uri-relative-filter-group>
, che può facoltativamente includere un tag android:allow
. Questi tag possono contenere tag <data>
che utilizzano attributi di tag dati
esistenti, nonché i nuovi attributi android:query
e android:fragment
.
Ecco un esempio della sintassi AndroidManifest
:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:domain="astore.com" />
<uri-relative-filter-group>
<data android:pathPrefix="/auth" />
<data android:query="region=na" />
</uri-relative-filter-group>
<uri-relative-filter-group android:allow="false">
<data android:pathPrefix="/auth" />
<data android:query="mobileoptout=true" />
</uri-relative-filter-group>
<uri-relative-filter-group android:allow="false">
<data android:pathPrefix="/auth" />
<data android:fragmentPrefix="faq" />
</uri-relative-filter-group>
</intent-filter>
Privacy Sandbox su Android
Android 15 porta i servizi pubblicitari di Android al livello 10 dell'estensione, incorporando l'ultima versione di Privacy Sandbox su Android, come parte del nostro lavoro di sviluppo di nuove tecnologie che migliorino la privacy degli utenti e consentano esperienze pubblicitarie efficaci e personalizzate per le app mobile. La nostra pagina Privacy Sandbox contiene ulteriori informazioni sui programmi beta e di anteprima di Privacy Sandbox su Android per aiutarti a iniziare.
Connessione Salute
Android 15 integra le estensioni di Android 14 10 relative a Connessione Salute di Android, una piattaforma sicura e centralizzata per gestire e condividere i dati relativi a salute e fitness raccolti dalle app. Questo aggiornamento aggiunge il supporto per nuovi tipi di dati relativi a fitness, alimentazione e altro ancora.
Condivisione schermo parziale
Android 15 supporta la condivisione dello schermo parziale per consentire agli utenti di condividere o registrare soltanto una finestra dell'app anziché l'intero schermo del dispositivo. Questa funzionalità, attivata per la prima volta in
Android 14 QPR2, include
MediaProjection
callback che consentono alla tua app
di personalizzare l'esperienza di condivisione dello schermo parziale. Tieni presente che per le app che hanno come target
Android 14 (livello API 34) o versioni successive,
ora è richiesto il consenso dell'utente per ogni
sessione di acquisizione di MediaProjection
.
Sicurezza
Android 15 ti aiuta a migliorare la sicurezza della tua app e a proteggere i relativi dati.
Proteggi i file utilizzando fs-verity
La versione FileIntegrityManager
di Android 15 include nuove API
che sfruttano la potenza della funzionalità fs-verity
nel kernel Linux. Con la funzionalità Verifica, i file possono essere protetti da firme crittografiche personalizzate, che ti aiutano a garantire che non siano stati manomessi o danneggiati. Ciò porta a una maggiore sicurezza, proteggendo da potenziali malware o da modifiche non autorizzate ai file che potrebbero compromettere la funzionalità o i dati dell'app.
Esperienza utente
Android 15 offre agli sviluppatori di app e agli utenti un controllo e una flessibilità maggiori per configurare il dispositivo in base alle loro esigenze.
Regole Non disturbare migliorate
AutomaticZenRule
consente alle app di personalizzare le regole di Gestione dell'attenzione (non disturbare) e di decidere quando attivarle o disattivarle. Android 15 migliora notevolmente queste regole con l'obiettivo di migliorare l'esperienza utente. Sono inclusi i seguenti miglioramenti:
- L'aggiunta di tipi a
AutomaticZenRule
consente al sistema di applicare un trattamento speciale ad alcune regole. - L'aggiunta di un'icona a
AutomaticZenRule
consente di rendere più riconoscibili le modalità. - Aggiunta a
AutomaticZenRule
di una stringatriggerDescription
che descriva le condizioni in base alle quali la regola deve diventare attiva per l'utente. - Aggiunta di
ZenDeviceEffects
aAutomaticZenRule
per consentire alle regole di attivare, ad esempio, la visualizzazione in scala di grigi, la modalità notturna o l'oscuramento dello sfondo.