Panoramica delle funzionalità e delle API

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 da targetSdkVersion.

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.

Aumento luce

Android 15 introduces Low Light Boost, a new auto-exposure mode available to both Camera 2 and the night mode camera extension. Low Light Boost adjusts the exposure of the Preview stream in low-light conditions. This is different from how the night mode camera extension creates still images, because night mode combines a burst of photos to create a single, enhanced image. While night mode works very well for creating a still image, it can't create a continuous stream of frames, but Low Light Boost can. Thus, Low Light Boost enables new camera capabilities, such as:

  • Providing an enhanced image preview, so users are better able to frame their low-light pictures
  • Scanning QR codes in low light

If you enable Low Light Boost, it automatically turns on when there's a low light level, and turns off when there's more light.

Apps can record off the Preview stream in low-light conditions to save a brightened video.

For more information, see Low Light Boost.

Controlli della fotocamera in-app

Android 15 adds a new extension for more control over the camera hardware and its algorithms on supported devices:

  • Advanced flash strength adjustments enabling precise control of flash intensity in both SINGLE and TORCH modes while capturing images.

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.

La luminosità degli elementi UI SDR sullo schermo a sinistra sembra essere più uniforme di quella sullo schermo a destra, il che simula possibili problemi di margine quando i contenuti HDR e SDR sono combinati. Regolando il margine HDR, puoi ottenere un migliore 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.

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.

Quando il dispositivo si connette a un satellite, viene visualizzata una notifica.

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.

Inoltre, le app ora possono registrare un'impronta sui dispositivi supportati in modo da poter ricevere una notifica dell'attività di polling loop, il che consente un funzionamento ottimale con più applicazioni con tecnologia NFC.

Ruolo Wallet

Android 15 introduce un nuovo ruolo Wallet che consente una maggiore integrazione con l'app Wallet preferita dell'utente. Questo ruolo sostituisce l'impostazione di pagamento contactless predefinita NFC. Gli utenti possono gestire il titolare del ruolo Wallet andando a Impostazioni > App > App predefinite.

Il ruolo Wallet viene utilizzato per il routing dei tocchi NFC per gli AID registrati nella categoria di pagamento. I tocchi vanno sempre al titolare del ruolo di Wallet, a meno che in primo piano non sia in esecuzione un'altra app registrata per lo stesso AID.

Questo ruolo viene utilizzato anche per determinare dove deve essere inserito il riquadro QuickAccess di Wallet quando viene attivato. Se il ruolo è impostato su "Nessuno", il riquadro QuickAccess non è disponibile e i tocchi NFC della categoria di pagamento vengono inviati solo all'app in primo piano.

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 includes an early preview of substantial improvements to the PdfRenderer APIs. Apps can incorporate advanced features such as rendering password-protected files, annotations, form editing, searching, and selection with copy. Linearized PDF optimizations are supported to speed local PDF viewing and reduce resource use.

The latest updates to PDF rendering include features such as searching an embedded PDF file.

The PdfRenderer has been moved to a module that can be updated using Google Play system updates independent of the platform release, and we're supporting these changes back to Android 11 (API level 30) by creating a compatible pre-Android 15 version of the API surface, called PdfRendererPreV.

We value your feedback on the enhancements we've made to the PdfRenderer API surface, and we plan to make it even easier to incorporate these APIs into your app with an upcoming Android Jetpack library.

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:

Layout per una riga di testo in cui la frase "Pixel 8 Pro" non va a capo in un tag <nobreak>.
Layout per la stessa riga di testo in cui la frase "Pixel 8 Pro" è a capo utilizzando un tag <nobreak>.

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:

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.

Archiviazione delle app

L'anno scorso, Android e Google Play hanno annunciato il supporto per l'archiviazione delle app, che consente agli utenti di liberare spazio rimuovendo dal dispositivo le app usate raramente e pubblicate tramite Android App Bundle su Google Play. Android 15 ora include il supporto a livello di sistema operativo per l'archiviazione e l'annullamento dell'archiviazione delle app, semplificando l'implementazione da parte di tutti gli store.

Le app con autorizzazione REQUEST_DELETE_PACKAGES possono chiamare il metodo PackageInstaller requestArchive per richiedere l'archiviazione di un pacchetto di app installato. Questa operazione rimuove l'APK e gli eventuali file memorizzati nella cache, ma conserva i dati utente. Le app archiviate vengono restituite come app visualizzabili tramite le API LauncherApps; gli utenti vedranno un'opzione di interfaccia utente per evidenziare che queste app sono archiviate. Se un utente tocca un'app archiviata, il programma di installazione responsabile riceverà una richiesta di annullamento dell'archiviazione e il processo di ripristino può essere monitorato dalla trasmissione di ACTION_PACKAGE_ADDED.

Accessibilità

Android 15 aggiunge funzionalità che migliorano l'accessibilità per gli utenti.

Braille migliore

In Android 15, abbiamo consentito a TalkBack di supportare i display braille che utilizzano lo standard HID sia tramite USB che tramite Bluetooth sicuro.

Questo standard, simile a quello utilizzato per mouse e tastiere, consentirà ad Android di supportare una gamma più ampia di display braille con il passare del tempo.

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.

Profilazione gestita dall'app

Android 15 include la nuovissima classe ProfilingManager, che ti consente di raccogliere le informazioni di profilazione dalla tua app. Prevediamo di includere questa API Android Jetpack che semplificherà la creazione delle richieste di profilazione, ma l'API di base consentirà la raccolta di dump dell'heap, profili heap, campionamento dello stack e altro ancora. Fornisce un callback alla tua app con un tag fornito per identificare il file di output, che viene inviato nella directory dei file dell'app. L'API limita la frequenza per minimizzare l'impatto sulle prestazioni.

Miglioramenti ai database SQLite

Android 15 introduces new SQLite APIs that expose advanced features from the underlying SQLite engine that target specific performance issues that can manifest in apps.

Developers should consult best practices for SQLite performance to get the most out of their SQLite database, especially when working with large databases or when running latency-sensitive queries.

  • Read-only deferred transactions: when issuing transactions that are read-only (don't include write statements), use beginTransactionReadOnly() and beginTransactionWithListenerReadOnly(SQLiteTransactionListener) to issue read-only DEFERRED transactions. Such transactions can run concurrently with each other, and if the database is in WAL mode, they can run concurrently with IMMEDIATE or EXCLUSIVE transactions.
  • Row counts and IDs: new APIs were added to retrieve the count of changed rows or the last inserted row ID without issuing an additional query. getLastChangedRowCount() returns the number of rows that were inserted, updated, or deleted by the most recent SQL statement within the current transaction, while getTotalChangedRowCount() returns the count on the current connection. getLastInsertRowId() returns the rowid of the last row to be inserted on the current connection.
  • Raw statements: issue a raw SQlite statement, bypassing convenience wrappers and any additional processing overhead that they may incur.

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 adds support for apps to detect that they are being recorded. A callback is invoked whenever the app transitions between being visible or invisible within a screen recording. An app is considered visible if activities owned by the registering process's UID are being recorded. This way, if your app is performing a sensitive operation, you can inform the user that they're being recorded.

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.

Gestione delle chiavi per la crittografia end-to-end

Stiamo introducendo E2eeContactKeysManager in Android 15, che semplifica la crittografia end-to-end (E2EE) nelle tue app Android fornendo un'API a livello di sistema operativo per l'archiviazione di chiavi pubbliche crittografiche.

E2eeContactKeysManager è progettato per integrarsi con l'app dei contatti della piattaforma per offrire agli utenti un modo centralizzato per gestire e verificare le chiavi pubbliche dei loro contatti.

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 lets apps customize Attention Management (Do Not Disturb) rules and decide when to activate or deactivate them. Android 15 greatly enhances these rules with the goal of improving the user experience. The following enhancements are included:

  • Adding types to AutomaticZenRule, allowing the system to apply special treatment to some rules.
  • Adding an icon to AutomaticZenRule, helping to make the modes be more recognizable.
  • Adding a triggerDescription string to AutomaticZenRule that describes the conditions on which the rule should become active for the user.
  • Added ZenDeviceEffects to AutomaticZenRule, allowing rules to trigger things like grayscale display, night mode, or dimming the wallpaper.

Internazionalizzazione

Android 15 aggiunge funzionalità e caratteristiche che completano l'esperienza utente quando un dispositivo viene utilizzato in lingue diverse.

Giustificazione tra caratteri

A partire da Android 15, il testo può essere giustificato utilizzando la spaziatura tra le lettere utilizzando JUSTIFICATION_MODE_INTER_CHARACTER. La giustificazione tra parole è stata introdotta per la prima volta in Android 8.0 (livello API 26) e la giustificazione tra caratteri offre funzionalità simili per le lingue che utilizzano lo spazio vuoto per la segmentazione, ad esempio cinese, giapponese e altri.

Layout per testo in giapponese utilizzando JUSTIFICATION_MODE_NONE.
Layout per il testo in inglese utilizzando JUSTIFICATION_MODE_NONE.


Layout per testo in giapponese utilizzando JUSTIFICATION_MODE_INTER_WORD.
Layout per il testo in inglese utilizzando JUSTIFICATION_MODE_INTER_WORD.


Layout per testo in giapponese con la nuova JUSTIFICATION_MODE_INTER_CHARACTER.
Layout per il testo in inglese con il nuovo JUSTIFICATION_MODE_INTER_CHARACTER.