![Android 4.4 su telefono e tablet](https://developer.android.google.cn/static/images/kk-devices.png?authuser=7&hl=it)
Ti diamo il benvenuto in Android 4.4 Marshmallow.
Android Lollipop porta tutte le funzionalità più innovative, più belle e utili di Android su più dispositivi ovunque.
Questo documento offre una panoramica delle novità per gli sviluppatori.
Scopri di più su Lollipop per i consumatori all'indirizzo www.android.com.
Android per tutti
Android 4.4 è stato progettato per funzionare in modo veloce, fluido e reattivo su una gamma di dispositivi molto più ampia che mai, compresi milioni di dispositivi di base in tutto il mondo con soli 512 MB di RAM.
Lollipop semplifica tutti i componenti principali per ridurre l'utilizzo della memoria e introduce nuove API e strumenti per aiutarti a creare applicazioni innovative, reattive ed efficienti in termini di memoria.
Gli OEM che creano la nuova generazione di dispositivi Android possono sfruttare opzioni e suggerimenti mirati per eseguire Android 4.4 in modo efficiente, anche su dispositivi con memoria ridotta. L'ottimizzazione della cache del codice JIT di Dalvik, l'unione della stessa pagina del kernel (KSM), lo scambio a zRAM e altre ottimizzazioni aiutano a gestire la memoria. Le nuove opzioni di configurazione consentono agli OEM di regolare i livelli di esaurimento della memoria per i processi, impostare le dimensioni della cache grafica, controllare il recupero della memoria e altro ancora.
Nello stesso sistema di Android, le modifiche apportate al sistema migliorano la gestione della memoria e ne riducono l'utilizzo. I processi di sistema principali vengono tagliati per utilizzare meno heap e ora proteggono in modo più aggressivo la memoria di sistema dalle app che consumano grandi quantità di RAM. Quando più servizi vengono avviati contemporaneamente, ad esempio quando cambia la connettività di rete, Android ora avvia i servizi in serie, in piccoli gruppi, per evitare picchi di memoria.
Per gli sviluppatori, Android 4.4 consente di offrire app efficienti e adattabili su tutti i dispositivi. Una nuova API, ActivityManager.isLowRamDevice(), ti consente di ottimizzare il comportamento della tua app in modo che corrisponda alla configurazione della memoria del dispositivo. Puoi modificare o disabilitare le funzionalità con memoria elevata in base alle esigenze, a seconda dei casi d'uso che vuoi supportare sui dispositivi di livello base. Qui puoi trovare ulteriori informazioni sull'ottimizzazione delle tue app per dispositivi con memoria ridotta.
I nuovi strumenti offrono inoltre informazioni utili sull'utilizzo della memoria da parte della tua app. Lo strumento procstats descrive in dettaglio l'utilizzo della memoria nel tempo, con tempi di esecuzione e utilizzo della memoria per le app in primo piano e i servizi in background. La visualizzazione on-device è disponibile anche come nuova opzione per gli sviluppatori. Lo strumento Meminfo è stato migliorato per facilitare l'individuazione di tendenze e problemi della memoria e rivela un overhead aggiuntivo di memoria che in precedenza non era visibile.
Nuove funzionalità NFC tramite l'emulazione della carta host
Android 4.4 introduce il supporto di una nuova piattaforma per le transazioni sicure basate su NFC tramite Host Card Emulation (HCE), per pagamenti, programmi fedeltà, accesso alle carte, pass per il trasporto pubblico e altri servizi personalizzati. Con HCE, qualsiasi app su un dispositivo Android può emulare una smart card NFC, consentendo agli utenti di toccare per avviare transazioni con un'app di loro scelta; non è necessario alcun secure element (SE) fornito nel dispositivo. Le app possono anche utilizzare una nuova modalità Reader per agire da lettori di carte HCE e altre transazioni basate su NFC.
![Simbolo pagamenti contactless](https://developer.android.google.cn/static/images/kk-contactless-card.png?authuser=7&hl=it)
Android HCE emula smart card basate su ISO/IEC 7816 che utilizzano il protocollo contactless ISO/IEC 14443-4 (ISO-DEP) per la trasmissione. Queste carte sono attualmente utilizzate da molti sistemi, inclusa l'infrastruttura di pagamento NFC EMVCO esistente. Android utilizza gli identificatori delle applicazioni (AID, Application Identifier) definiti nello standard ISO/IEC 7816-4 come base per instradare le transazioni alle app per Android corrette.
Le app dichiarano gli AID supportati nei propri file manifest, insieme a un identificatore di categoria che indica il tipo di assistenza disponibile (ad esempio, "pagamenti"). Nei casi in cui più app supportino lo stesso AID nella stessa categoria, Android mostra una finestra di dialogo che consente all'utente di scegliere l'app da utilizzare.
Quando l'utente tocca per pagare in un terminale point of sale, il sistema estrae l'AID preferito e instrada la transazione all'applicazione corretta. L'app legge i dati delle transazioni e può utilizzare qualsiasi servizio locale o basato sulla rete per verificare e completare la transazione.
Android HCE richiede la presenza di un controller NFC nel dispositivo. Il supporto per HCE è già ampiamente disponibile sulla maggior parte dei controller NFC, che offrono supporto dinamico per le transazioni HCE e SE. I dispositivi Android 4.4 che supportano la tecnologia NFC includeranno i pagamenti contactless con la tecnologia HCE.
Framework di stampa
Ora le app per Android possono stampare qualsiasi tipo di contenuto tramite Wi-Fi o servizi in hosting nel cloud come Google Cloud Print. Nelle app compatibili con la stampa, gli utenti possono scoprire le stampanti disponibili, modificare le dimensioni della carta, scegliere pagine specifiche da stampare e stampare quasi ogni tipo di documento, immagine o file.
Android 4.4 introduce il supporto nativo della piattaforma per la stampa, insieme ad API per la gestione della stampa e l'aggiunta di nuovi tipi di supporto per le stampanti. La piattaforma fornisce un gestore di stampa che funge da media tra le app che richiedono la stampa e i servizi di stampa installati che gestiscono le richieste di stampa. Il gestore di stampa fornisce servizi condivisi e un'interfaccia utente di sistema per la stampa, offrendo agli utenti un controllo coerente sulla stampa da qualsiasi app. Il gestore di stampa garantisce inoltre la sicurezza dei contenuti mentre vengono trasferiti tra processi, da un'app a un servizio di stampa.
![Dispositivo mobile con orientamento orizzontale che mostra le funzionalità di supporto della stampante](https://developer.android.google.cn/static/images/kk-print-land-n5.jpg?authuser=7&hl=it)
Puoi aggiungere il supporto per la stampa alle tue app o sviluppare servizi di stampa per supportare tipi specifici di stampanti.
I produttori di stampanti possono utilizzare nuove API per sviluppare i propri servizi di stampa, ovvero componenti modulari che aggiungono logica e servizi specifici del fornitore per la comunicazione con determinati tipi di stampanti. Possono creare servizi di stampa e distribuirli tramite Google Play, in modo che gli utenti possano trovarli e installarli facilmente sui propri dispositivi. Come con altre app, puoi aggiornare i servizi di stampa over-the-air in qualsiasi momento.
Le app client possono utilizzare nuove API per aggiungere funzionalità di stampa alle app con modifiche minime al codice. Nella maggior parte dei casi, dovresti aggiungere un'azione di stampa alla barra delle azioni e un'interfaccia utente per scegliere gli elementi da stampare. Dovrai inoltre implementare le API per creare processi di stampa, inviare query al gestore di stampa per conoscere lo stato e annullare i processi. In questo modo puoi stampare quasi tutti i tipi di contenuti, dalle immagini e i documenti locali ai dati di rete o una visualizzazione visualizzata su una tela.
Per una compatibilità più ampia, Android utilizza PDF come formato file principale per la stampa. Prima di stampare, l'app deve generare una versione PDF impaginata correttamente dei contenuti. Per comodità, l'API di stampa fornisce classi helper native e WebView per consentirti di creare PDF utilizzando le API di disegno standard di Android. Se la tua app sa come disegnare i contenuti, può creare rapidamente un PDF da stampare.
La maggior parte dei dispositivi con Android 4.4 includerà Google Cloud Print preinstallato come servizio di stampa, nonché diverse app Google che supportano la stampa, tra cui Chrome, Drive, Gallery e QuickOffice.
Framework di accesso allo spazio di archiviazione
Un nuovo Storage Access Framework consente agli utenti di sfogliare e aprire facilmente documenti, immagini e altri file di tutti i loro fornitori di archiviazione di documenti preferiti. Un'interfaccia utente standard facile da usare consente agli utenti di sfogliare i file e di accedere ai file recenti in modo coerente in tutte le app e in tutti i provider.
![Dispositivo mobile che mostra una barra laterale aperta all'interno del nuovo Storage Access Framework](https://developer.android.google.cn/static/images/kk-saf2-n5.jpg?authuser=7&hl=it)
![Mobile che mostra i servizi Box integrati all'interno del nuovo Storage Access Framework](https://developer.android.google.cn/static/images/kk-saf1-n5.jpg?authuser=7&hl=it)
Box e altri hanno integrato i propri servizi nel framework di accesso a Storage, consentendo agli utenti di accedere facilmente ai propri documenti dalle app nel sistema.
I servizi di archiviazione cloud o locali possono partecipare a questo ecosistema implementando una nuova classe di fornitori di documenti che incapsula i loro servizi. La classe provider include tutte le API necessarie per registrare il provider nel sistema e gestire la navigazione, la lettura e la scrittura di documenti nel provider. Il fornitore di documenti può consentire agli utenti di accedere a qualsiasi dato remoto o locale che può essere rappresentato come file, da testo, foto e sfondi a video, audio e altro ancora.
Se crei un provider di documenti per un cloud o un servizio locale, puoi fornirlo agli utenti come parte della tua app per Android esistente. Dopo aver scaricato e installato l'app, gli utenti avranno accesso immediato al tuo servizio da qualsiasi app che partecipa al framework. Questo può aiutarti a ottenere visibilità e coinvolgimento degli utenti, poiché questi ultimi troveranno i tuoi servizi più facilmente.
Se sviluppi un'app client che gestisce file o documenti, puoi integrarla con il framework di accesso allo spazio di archiviazione semplicemente utilizzando nuovi intent CREATE_DOCUMENT o OPEN_DOCUMENT per aprire o creare file. Il sistema mostra automaticamente l'interfaccia utente standard per la navigazione dei documenti, inclusi tutti i fornitori di documenti disponibili.
Puoi integrare l'app client una sola volta, per tutti i provider, senza alcun codice specifico del fornitore. Man mano che gli utenti aggiungono o rimuovono i fornitori, continueranno ad avere accesso ai loro servizi preferiti dalla tua app, senza modifiche o aggiornamenti necessari nel codice.
Il framework di accesso allo spazio di archiviazione è integrato con l'intent GET_CONTENT esistente, quindi gli utenti possono anche accedere a tutti i contenuti e le origini dati precedenti dalla nuova interfaccia utente di sistema per la navigazione. Le app possono continuare a utilizzare GET_CONTENT come modo per consentire agli utenti di importare dati. Il framework di accesso allo spazio di archiviazione e l'interfaccia utente di sistema per la navigazione semplificano la ricerca e l'importazione dei dati da parte degli utenti da una gamma più ampia di origini.
La maggior parte dei dispositivi con Android 4.4 includerà Google Drive e lo spazio di archiviazione locale preintegrati come fornitori di documenti e anche le app Google che supportano i file utilizzeranno il nuovo framework.
Sensori a bassa potenza
Raggruppamento dei sensori
Android 4.4 introduce il supporto della piattaforma per il raggruppamento dei sensori hardware, una nuova ottimizzazione che può ridurre drasticamente il consumo energetico dovuto alle attività continue dei sensori.
Con il batch dei sensori, Android interagisce con l'hardware del dispositivo per raccogliere e inviare gli eventi dei sensori in modo efficiente in batch, anziché singolarmente man mano che vengono rilevati. In questo modo il processore delle applicazioni del dispositivo rimane in uno stato inattivo a basso consumo fino alla distribuzione dei batch. Puoi richiedere eventi in batch da qualsiasi sensore utilizzando un listener di eventi standard e puoi controllare l'intervallo di ricezione dei batch. Puoi anche richiedere la consegna immediata degli eventi tra cicli batch.
Il raggruppamento dei sensori è ideale per casi d'uso a basso consumo e a lunga esecuzione, come fitness, monitoraggio della posizione, monitoraggio e altro ancora. Può rendere la tua app più efficiente e ti consente di monitorare gli eventi dei sensori continuamente, anche quando lo schermo è spento e il sistema è in sospensione.
Il raggruppamento dei sensori è attualmente disponibile su Nexus 5. Stiamo collaborando con i nostri partner per i chipset per renderlo disponibile su più dispositivi il prima possibile.
![Dispositivo mobile che mostra il supporto del nuovo rilevatore di passi](https://developer.android.google.cn/static/images/kk-sensors-moves-n5.jpg?authuser=7&hl=it)
![Dispositivo mobile che mostra il nuovo supporto del contapassi](https://developer.android.google.cn/static/images/kk-sensors-runtastic-n5.jpg?authuser=7&hl=it)
Sposta e Runtastic Pedometer utilizzano il rilevatore di passi hardware per offrire servizi a lunga esecuzione a basso consumo.
Rilevatore di passi e contapassi
Android 4.4 aggiunge inoltre il supporto della piattaforma per due nuovi sensori composti, un rilevatore di passi e un contapassi, che consentono alla tua app di rilevare i passi quando l'utente cammina, corre o sale le scale. Questi nuovi sensori sono implementati nell'hardware per garantire un basso consumo energetico.
Il rilevatore di passi analizza l'input dell'accelerometro per riconoscere quando l'utente ha fatto un passo, quindi attiva un evento per ogni passaggio. Il contatore di passi monitora il numero totale di passi dall'ultimo riavvio del dispositivo e attiva un evento a ogni modifica del conteggio dei passi. Poiché la gestione logica e dei sensori è integrata nella piattaforma e nell'hardware sottostante, non è necessario gestire i tuoi algoritmi di rilevamento nell'app.
I sensori di rilevamento dei passi e contatore sono disponibili su Nexus 5; stiamo collaborando con i nostri partner per i chipset per renderli disponibili su nuovi dispositivi il prima possibile.
Fornitore SMS
Se sviluppi un'app di messaggistica che utilizza SMS o MMS, ora puoi utilizzare un provider di SMS condiviso e nuove API per gestire l'archiviazione e il recupero dei messaggi della tua app. Il nuovo provider di SMS e le nuove API definiscono un modello di interazione standardizzato per tutte le app che gestiscono SMS o MMS.
Insieme al nuovo provider e alle nuove API, Android 4.4 introduce una nuova semantica per la ricezione di messaggi e la scrittura al provider. Quando un messaggio viene ricevuto, il sistema lo indirizza direttamente all'app di messaggistica predefinita dell'utente utilizzando il nuovo intent SMS_DELIVER. Altre app possono comunque ascoltare i messaggi in arrivo utilizzando l'intent SMS_RECEIVED. Inoltre, il sistema ora consente solo all'app predefinita di scrivere i dati dei messaggi al provider, anche se altre app possono leggere i dati dei messaggi in qualsiasi momento. Le app che non sono predefinite dell'utente possono comunque inviare messaggi, il sistema gestisce la scrittura di questi messaggi al provider per conto dell'app, in modo che gli utenti possano vederli nell'app predefinita.
Il nuovo provider e la nuova semantica aiutano a migliorare l'esperienza utente quando sono installate più app di messaggistica e a creare nuove funzionalità di messaggistica con API completamente supportate e compatibili con il forwarding.
Nuovi modi per creare app straordinarie
![Dispositivo mobile su cui è visualizzata la nuova funzionalità modalità immersiva](https://developer.android.google.cn/static/images/kk-immersive-n5.jpg?authuser=7&hl=it)
Una nuova modalità immersiva consente alle app di utilizzare ogni pixel sullo schermo per mostrare contenuti e acquisire eventi tattili.
Modalità immersiva a schermo intero
Ora le tue app possono utilizzare ogni pixel sullo schermo del dispositivo per presentare i tuoi contenuti e acquisire eventi touch. Android 4.4 aggiunge una nuova modalità immersiva a schermo intero che consente di creare UI a schermo intero che vanno da bordo a bordo su smartphone e tablet, nascondendo tutta l'UI di sistema, come la barra di stato e la barra di navigazione. È ideale per contenuti visivi di qualità come foto, video, mappe, libri e giochi.
Nella nuova modalità, l'interfaccia utente di sistema rimane nascosta, anche mentre gli utenti interagiscono con la tua app o il tuo gioco. Puoi acquisire eventi touch da qualsiasi punto dello schermo, anche aree che altrimenti sarebbero occupate dalle barre di sistema. Questo è un ottimo modo per creare un'interfaccia utente più grande, completa e immersiva nella tua app o nel tuo gioco e anche per ridurre le distrazioni visive.
Per garantire agli utenti un accesso facile e coerente all'interfaccia utente di sistema dalla modalità immersiva a schermo intero, Android 4.4 supporta un nuovo gesto: in modalità immersiva, uno scorrimento laterale dalla parte superiore o inferiore dello schermo ora rivela l'UI di sistema.
Per tornare alla modalità immersiva, gli utenti possono toccare lo schermo al di fuori dei limiti delle barre o attendere per un breve periodo che le barre si nascondano automaticamente. Per un'esperienza utente coerente, il nuovo gesto funziona anche con i metodi precedenti per nascondere la barra di stato.
Framework di transizioni per l'animazione delle scene
La maggior parte delle app struttura i propri flussi in base a diversi stati chiave dell'interfaccia utente che espongono azioni diverse. Molte app utilizzano inoltre l'animazione per aiutare gli utenti a comprendere l'avanzamento in questi stati e le azioni disponibili in ciascuno. Per semplificare la creazione di animazioni di alta qualità nella tua app, Android 4.4 introduce un nuovo framework per le transizioni.
Il framework delle transizioni consente di definire le scene, in genere le gerarchie e le transizioni, che descrivono come animare o trasformare le scene quando l'utente le entra o esce. Puoi utilizzare diversi tipi di transizione predefiniti per animare le scene in base a proprietà specifiche, come i limiti del layout o la visibilità. È disponibile anche un tipo di transizione automatica che applica la dissolvenza, lo spostamento e il ridimensionamento delle visualizzazioni durante il cambio di scena. Inoltre, puoi definire transizioni personalizzate per animare le proprietà più importanti per la tua app e, se necessario, collegare i tuoi stili di animazione.
Con il framework delle transizioni puoi anche animare le modifiche all'interfaccia utente al volo, senza dover definire le scene. Ad esempio, puoi apportare una serie di modifiche a una gerarchia di viste e fare in modo che Transizione Manager esegua automaticamente una transizione ritardata per tali modifiche.
Una volta impostate le transizioni, è facile richiamarle dalla tua app. Ad esempio, puoi chiamare un singolo metodo per iniziare una transizione, apportare varie modifiche alla gerarchia delle visualizzazioni e, nei frame successivi, inizieranno automaticamente le animazioni delle modifiche specificate.
![UI di sistema semitrasparente](https://developer.android.google.cn/static/images/kk-home.jpg?authuser=7&hl=it)
Le app possono utilizzare nuovi stili di finestra per richiedere barre di sistema traslucide.
Per un controllo personalizzato sulle transizioni tra scene specifiche del flusso dell'applicazione, puoi utilizzare TransizioneManager. Transizione Manager consente di definire la relazione tra le scene e le transizioni eseguite per cambiamenti di scene specifiche.
Stili dell'interfaccia utente di sistema semitrasparenti
Per ottenere il massimo dai tuoi contenuti, ora puoi utilizzare nuovi stili e temi delle finestre per richiedere un'interfaccia utente di sistema traslucide, incluse la barra di stato e la barra di navigazione. Per garantire la leggibilità dei pulsanti della barra di navigazione o delle informazioni nella barra di stato, dietro le barre di sistema vengono mostrate lievi sfumature. Un caso d'uso tipico è un'app che deve essere visibile su uno sfondo.
Accesso alle notifiche migliorato
I servizi listener di notifiche ora possono visualizzare ulteriori informazioni sulle notifiche in arrivo create utilizzando le API di generazione delle notifiche. I servizi listener possono accedere alle azioni di una notifica nonché a nuovi campi extra (testo, icona, immagine, avanzamento, cronometro e molti altri) per estrarre informazioni più nitide sulla notifica e presentarle in un modo diverso.
WebView di Chromium
Android 4.4 include una nuova implementazione di WebView basata su Chromium. Il nuovo Chromium WebView ti offre le ultime novità in materia di supporto, prestazioni e compatibilità con gli standard per creare e visualizzare i tuoi contenuti basati sul web.
Chromium WebView offre un ampio supporto per HTML5, CSS3 e JavaScript. Supporta la maggior parte delle funzionalità HTML5 disponibili in Chrome per Android 30. Offre inoltre una versione aggiornata del motore JavaScript (V8) che offre prestazioni JavaScript notevolmente migliorate.
Inoltre, la nuova versione di Chromium WebView supporta il debug remoto tramite Chrome DevTools. Ad esempio, puoi utilizzare Chrome DevTools sulla tua macchina di sviluppo per ispezionare, eseguire il debug e analizzare i contenuti WebView in tempo reale su un dispositivo mobile.
Il nuovo Chromium WebView è incluso su tutti i dispositivi compatibili con Android 4.4 e versioni successive. Puoi sfruttare subito il nuovo WebView, con modifiche minime ad app e contenuti esistenti. Nella maggior parte dei casi, la migrazione dei tuoi contenuti alla nuova implementazione verrà eseguita senza problemi.
Nuove funzionalità multimediali
Registrazione dello schermo
Ora è facile creare video di alta qualità della tua app, direttamente dal tuo dispositivo Android. Android 4.4 aggiunge il supporto per la registrazione dello schermo e fornisce un'utilità di registrazione dello schermo che consente di avviare e interrompere la registrazione su un dispositivo collegato al tuo ambiente SDK Android tramite USB. È un nuovo modo fantastico per creare procedure dettagliate e tutorial per la tua app, materiali di test, video di marketing e altro ancora.
Con l'utilità di registrazione dello schermo, puoi acquisire video dei contenuti dello schermo del dispositivo e archiviarli come file MP4 sul dispositivo. Puoi registrare a qualsiasi risoluzione e velocità in bit supportate dal dispositivo e l'output mantiene le proporzioni del display. Per impostazione predefinita, l'utilità seleziona una risoluzione uguale o simile a quella del display del dispositivo nell'orientamento corrente. Al termine della registrazione, puoi condividere il video direttamente dal tuo dispositivo o eseguire il pull del file MP4 sul tuo computer host per la post-produzione.
Se la tua app riproduce video o altri contenuti protetti che non vuoi che vengano acquisiti dal registratore dello schermo, puoi utilizzare SurfaceView.setSecure() per contrassegnare i contenuti come sicuri.
Puoi accedere alla registrazione dello schermo tramite lo strumento ADB incluso nell'SDK Android, utilizzando il comando adb shell screenrecord. Puoi anche avviarlo tramite logcat in Android Studio.
Passaggio della risoluzione tramite riproduzione adattiva
Android 4.4 offre un supporto formale per la riproduzione adattiva nel framework multimediale di Android. La riproduzione adattiva è una funzionalità facoltativa dei decodificatori video per MPEG-DASH e altri formati che consente una variazione perfetta della risoluzione durante la riproduzione. Il client può iniziare a fornire i frame video di input del decoder di una nuova risoluzione e la risoluzione dei buffer di output cambia automaticamente e senza un divario significativo.
Il cambio di risoluzione in Android 4.4 consente alle app multimediali di offrire un'esperienza video in streaming notevolmente migliore. Le app possono verificare il supporto della riproduzione adattiva in fase di runtime utilizzando le API esistenti e implementare il cambio di risoluzione tramite le nuove API introdotte in Android 4.4.
Crittografia comune per DASH
Android ora supporta il protocollo CENC (Common Encryption) per MPEG-DASH, fornendo uno schema DRM standard e multipiattaforma per la gestione della protezione dei contenuti. Le app possono sfruttare CENC tramite il framework DRM modulare di Android e le API della piattaforma per il supporto di DASH.
Live streaming HTTP
Android 4.4 aggiorna il supporto del live streaming HTTP (HLS) della piattaforma a un soprainsieme della versione 7 della specifica HLS (versione 4 del protocollo). Per informazioni dettagliate, consulta la bozza di IETF.
Tunneling audio a DSP
Per una riproduzione audio a basso consumo e ad alte prestazioni, Android 4.4 aggiunge il supporto della piattaforma per il tunneling audio a un processore di segnale digitale (DSP) nel chipset del dispositivo. Con il tunneling, la decodifica audio e gli effetti di output vengono scaricati sul DSP, riattivando il processore dell'applicazione con minore frequenza e utilizzando meno batteria.
Il tunneling audio può migliorare notevolmente la durata della batteria per casi d'uso come l'ascolto di musica su cuffie con lo schermo disattivato. Ad esempio, con il tunneling audio, il Nexus 5 offre un tempo totale di riproduzione audio fuori rete fino a 60 ore, con un aumento di oltre il 50% rispetto all'audio non tunnel.
Le applicazioni multimediali possono sfruttare il tunneling audio sui dispositivi supportati senza dover modificare il codice. Il sistema applica il tunneling per ottimizzare la riproduzione audio ogni volta che è disponibile sul dispositivo.
![Visualizzatore che mostra l'effetto audio del miglioramento del volume](https://developer.android.google.cn/static/images/kk-loudnessEnhancerAnnotated.png?authuser=7&hl=it)
Visualizzazione di come l'effetto LoudnessEnhancer può rendere più udibili i contenuti vocali.
Il tunneling audio richiede supporto nell'hardware del dispositivo. Al momento il tunneling audio è disponibile su Nexus 5. Stiamo collaborando con i nostri partner per i chipset per renderlo disponibile su più dispositivi il prima possibile.
Monitoraggio audio
Le app possono utilizzare nuovi strumenti di monitoraggio nell'effetto Visualizzatore per ricevere aggiornamenti sui livelli di picco e RMS di qualsiasi audio attualmente in riproduzione sul dispositivo. Ad esempio, puoi utilizzare questa funzionalità in modo creativo nei visualizzatori di musica o per implementare la misurazione della riproduzione in un media player.
Potenziatore del volume
Le applicazioni di riproduzione di contenuti multimediali possono aumentare il volume del contenuto parlato utilizzando il nuovo effetto LoudnessEnhancer, che funge da compressione con costanti di tempo specificamente ottimizzate per il parlato.
Timestamp audio per una migliore sincronizzazione AV
Il framework audio ora può segnalare i timestamp della presentazione dall'HAL di output audio alle applicazioni, per una migliore sincronizzazione audio-video. I timestamp audio consentono alla tua app di determinare quando un frame audio specifico verrà presentato all'utente al di fuori del dispositivo. Puoi utilizzare le informazioni del timestamp per sincronizzare in modo più accurato l'audio con i frame video.
MiracastTM CERTIFICATO Wi-Fi
Ora i dispositivi Android 4.4 possono essere certificati in base alla specifica dei display Wi-Fi Wi-Fi Alliance come compatibili con Miracast. Per facilitare i test, una nuova opzione per sviluppatori di display wireless espone impostazioni e controlli di configurazione avanzati per la certificazione sui display wireless. Puoi accedere all'opzione in Impostazioni > Opzioni sviluppatore > Certificazione display wireless. Nexus 5 è un display wireless certificato Miracast.
Computing RenderScript
![Grafico delle ottimizzazioni di renderingscipt](https://developer.android.google.cn/static/images/kk-rs-chart-versions.png?authuser=7&hl=it)
I benchmark delle prestazioni per Android 4.4 rispetto ad Android 4.3 vengono eseguiti sugli stessi dispositivi (Nexus 7, Nexus 10).
Miglioramenti costanti del rendimento
Quando le tue app utilizzano RenderScript, traggono vantaggio dall'ottimizzazione continua delle prestazioni nel runtime RenderScript stesso, senza la necessità di ricompilazione. Il grafico a destra mostra i miglioramenti delle prestazioni di Android 4.4 su due chipset popolari.
Accelerazione GPU
Qualsiasi app che utilizza RenderScript su un dispositivo supportato beneficia dell'accelerazione della GPU, senza modifiche al codice o ricompilazione. Dal momento che il Nexus 10 ha introdotto per la prima volta l'accelerazione GPU RenderScript, vari altri partner hardware hanno aggiunto supporto.
Ora con Android 4.4, l'accelerazione della GPU è disponibile su Nexus 5, Nexus 4, Nexus 7 (2013) e Nexus 10. Stiamo collaborando con i nostri partner per rendere disponibile questa funzionalità su più dispositivi il prima possibile.
RenderScript nell'NDK per Android
Ora puoi sfruttare RenderScript direttamente dal tuo codice nativo. Una nuova API C++ nel Native Development Kit (NDK) di Android ti consente di accedere alle stesse funzionalità RenderScript disponibili tramite le API del framework, incluse le funzionalità intrinseche degli script, i kernel personalizzati e altro ancora.
Se devi gestire attività nel codice nativo di grandi dimensioni e che richiedono prestazioni elevate, puoi eseguirle utilizzando RenderScript e integrarle con il tuo codice nativo. RenderScript offre ottime prestazioni su un'ampia gamma di dispositivi, con supporto automatico per CPU multi-core, GPU e altri processori.
Quando crei un'app che utilizza RenderScript tramite NDK, puoi distribuirla su qualsiasi dispositivo con Android 2.2 o versioni successive, proprio come con la libreria di supporto RenderScript disponibile per le API framework.
Grafica
SurfaceFlinger GLES 2.0
Android 4.4 aggiorna il suo SurfaceFlinger da OpenGL ES 1.0 a OpenGL ES 2.0.
Nuovo supporto di Hardware Composer per i display virtuali
L'ultima versione dell'hardware Android Composer, HWComposer 1.3, supporta la composizione hardware di un singolo display virtuale oltre al display principale esterno (ad es. HDMI) e ha migliorato l'interoperabilità di OpenGL ES.
Nuovi tipi di connettività
Nuovi profili Bluetooth
Supporto di Android 4.4 per due nuovi profili Bluetooth per consentire alle app di supportare una gamma più ampia di interazioni a basso consumo e con contenuti multimediali. Bluetooth HID over GATT (HOGP) offre alle app un collegamento a bassa latenza con dispositivi periferici a bassa potenza come mouse, joystick e tastiere. Bluetooth MAP consente alle tue app di scambiare messaggi con un dispositivo nelle vicinanze, ad esempio un terminale per auto e motori per l'uso in vivavoce o un altro dispositivo mobile. Come estensione del Bluetooth AVRCP 1.3, gli utenti possono ora impostare il volume assoluto del sistema dai loro dispositivi Bluetooth.
Il supporto delle piattaforme per HOGP, MAP e AVRCP si basa sullo stack Bluetooth Bluedroid introdotto da Google e Broadcom in Android 4.2. L'assistenza è disponibile immediatamente sui dispositivi Nexus e su altri dispositivi compatibili con Android che offrono funzionalità Bluetooth compatibili.
Blaster a infrarossi
Android 4.4 introduce il supporto della piattaforma per i Blaster IR integrati, insieme a una nuova API e un nuovo servizio di sistema che consentono di creare app per sfruttarle.
Utilizzando la nuova API, puoi creare app che consentono agli utenti di controllare da remoto TV, sintonizzatori, interruttori e altri dispositivi elettronici nelle vicinanze. L'API consente all'app di controllare se lo smartphone o il tablet dispone di un trasmettitore a infrarossi, eseguire query sulla frequenza dell'operatore e inviare segnali a infrarossi.
Poiché l'API è standard per i dispositivi con Android 4.4 o versioni successive, la tua app può supportare la gamma più ampia di fornitori senza scrivere codice di integrazione personalizzato.
Supporto TDLS Wi-Fi
Android 4.4 introduce un modo semplice per trasmettere in streaming contenuti multimediali e altri dati più velocemente tra dispositivi già collegati alla stessa rete Wi-Fi supportando la configurazione del collegamento diretto tramite tunnel Wi-Fi (TDLS).
Accessibilità
Impostazioni a livello di sistema per il sottotitolaggio codificato
Android 4.4 ora supporta una migliore esperienza di accessibilità tra le app aggiungendo preferenze a livello di sistema per i sottotitoli codificati. Gli utenti possono andare a Impostazioni > Accessibilità > Sottotitoli per impostare preferenze globali per i sottotitoli, ad esempio se visualizzare i sottotitoli e la lingua, le dimensioni del testo e lo stile del testo da utilizzare.
Le app che utilizzano i video ora possono accedere alle impostazioni dei sottotitoli codificati dell'utente e modificare la presentazione in base alle preferenze dell'utente. Una nuova API di gestione dei sottotitoli codificati ti consente di controllare e monitorare le preferenze dell'utente per le didascalie. Gestione sottotitoli codificati fornisce lo stato preferito dell'utente per i sottotitoli, così come le impostazioni internazionali preferite, il fattore di scalabilità e lo stile del testo. Lo stile di testo include colori di primo piano e di sfondo, proprietà dei bordi e caratteri tipografici.
![Dispositivi mobili con orientamento orizzontale che mostra i sottotitoli codificati nelle preferenze dei sottotitoli a livello di sistema](https://developer.android.google.cn/static/images/kk-captions-n5.jpg?authuser=7&hl=it)
Ora le app possono fare riferimento alle preferenze relative ai sottotitoli a livello di sistema dell'utente. Un esempio dello stile di visualizzazione previsto viene mostrato direttamente nelle impostazioni.
Inoltre, le app che utilizzano VideoView possono usare una nuova API per trasmettere uno stream di sottotitoli codificati insieme a uno stream video per il rendering. Il sistema gestisce automaticamente la visualizzazione dei sottotitoli sui frame video in base alle impostazioni di sistema dell'utente. Attualmente, VideoView supporta la visualizzazione automatica dei sottotitoli codificati solo in formato WebVTT.
Tutte le app che mostrano sottotitoli devono assicurarsi di controllare le preferenze dell'utente relative ai sottotitoli a livello di sistema e di eseguire il rendering dei sottotitoli il più fedelmente possibile a queste preferenze. Per ulteriori informazioni sull'aspetto di determinate combinazioni di impostazioni, puoi guardare un'anteprima dei sottotitoli codificati in lingue, dimensioni e stili diversi direttamente nell'app Impostazioni.
API per l'accessibilità avanzata
Android 4.4 estende le API di accessibilità per supportare una descrizione strutturale e semantica più precisa e l'osservazione degli elementi sullo schermo. Con le nuove API, gli sviluppatori possono migliorare la qualità dei feedback accessibili fornendo ai servizi di accessibilità maggiori informazioni sugli elementi sullo schermo.
Nei nodi di accessibilità, gli sviluppatori ora possono determinare se un nodo è un popup, ottenere il tipo di input e altro ancora. Puoi anche utilizzare nuove API per lavorare con nodi che contengono informazioni di tipo griglia, come elenchi e tabelle. Ad esempio, ora puoi specificare nuove azioni supportate, informazioni di raccolta, modalità regione in tempo reale e altro ancora.
I nuovi eventi di accessibilità consentono agli sviluppatori di seguire più da vicino i cambiamenti che si verificano nei contenuti delle finestre e ora possono ascoltare le modifiche nella modalità di esplorazione touch sul dispositivo.
Supporto per gli utenti internazionali
Mirroring disegnabile per le impostazioni internazionali RTL
Se la tua app ha come target utenti che utilizzano script RTL, puoi utilizzare una nuova API per dichiarare che un disegnabile deve essere sottoposto a mirroring automatico quando le impostazioni internazionali dell'utente includono una lingua RTL.
Dichiarare un elemento di disegno come mirroring automatico ti aiuta a impedire la duplicazione di asset nell'app e riduce le dimensioni dell'APK. Quando disponi di elementi disegnabili riutilizzabili per le presentazioni sia LTR che RTL, puoi dichiarare le versioni predefinite come sottoposte a mirroring automatico e quindi omettere tali elementi dalle risorse RTL.
![](https://developer.android.google.cn/static/images/kk-pseudolocale-rtl.png?authuser=7&hl=it)
L'opzione Forza layout RTL semplifica i test della localizzazione dell'app.
Nel codice dell'applicazione puoi dichiarare vari tipi di disegnabili come con mirroring automatico, come bitmap, nove-patch, livello, elenco di stati e altri disegnabili. Puoi anche dichiarare una risorsa bozza come sottoposta a mirroring automaticamente nei file di risorse utilizzando un nuovo attributo.
Forza layout RTL
Per semplificare il test e il debug dei problemi di mirroring del layout senza passare a un linguaggio RTL, Android include una nuova opzione per sviluppatori che consente di forzare la direzione del layout RTL in tutte le app.
L'opzione Forza layout RTL attiva il layout RTL sul dispositivo per tutte le impostazioni internazionali e mostra il testo nella lingua attuale. In questo modo puoi trovare problemi di layout nella tua app, senza dover visualizzare l'app in una lingua RTL. Puoi accedere all'opzione in Impostazioni > Opzioni sviluppatore > Forza direzione layout RTL.
Miglioramenti alla sicurezza
SELinux (modalità di applicazione)
Android 4.4 aggiorna la configurazione SELinux da "permissiva" ad "applicazione forzata". Ciò significa che le potenziali violazioni dei criteri all'interno di un dominio SELinux con un criterio di applicazione verranno bloccate.
Algoritmi crittografici migliorati
Android ha migliorato ulteriormente la sicurezza aggiungendo il supporto per altri due algoritmi crittografici. Al provider dell'archivio chiavi è stato aggiunto il supporto dell'algoritmo di firma digitale Elliptic Curve (ECDSA) per migliorare la sicurezza della firma digitale, applicabile a scenari come la firma di un'applicazione o di una connessione dati. La funzione di derivazione della chiave Scrypt è implementata per proteggere le chiavi di crittografia utilizzate per la crittografia dell'intero disco.
Ulteriori miglioramenti
Sui dispositivi multiutente, le VPN vengono ora applicate per utente. In questo modo, un utente può instradare tutto il traffico di rete tramite una VPN senza influire sugli altri utenti del dispositivo. Inoltre, Android ora supporta il livello 2 di FORTIFY_SOURCE e tutto il codice è compilato con queste protezioni. FORTIFY_SOURCE è stato migliorato per funzionare con il clang.
Strumenti per analizzare l'utilizzo della memoria
Procstat
Un nuovo strumento chiamato procstats ti consente di analizzare le risorse di memoria utilizzate dalla tua app, nonché quelle usate da altre app e servizi in esecuzione sul sistema.
Procstats tiene traccia dell'esecuzione nel tempo delle app, fornendo dati sulle durate di esecuzione e sull'utilizzo della memoria per determinare l'efficienza delle loro prestazioni. Questo è particolarmente importante per le app che avviano servizi in esecuzione in background, poiché consentono di monitorare il tempo di esecuzione e la quantità di RAM che utilizzano. Procstats raccoglierà anche i dati per le applicazioni in primo piano sull'utilizzo della memoria nel tempo per determinare il profilo di memoria complessivo dell'app.
Procstats può aiutarti a identificare i servizi in background avviati dalla tua app. Puoi tenere traccia del tempo di esecuzione dei servizi e della quantità di RAM che utilizzano durante questa operazione. Procstats consente inoltre di profilare l'app mentre è in primo piano, utilizzando l'utilizzo della memoria nel tempo per determinarne il profilo di memoria complessivo.
![](https://developer.android.google.cn/static/images/kk-procstats.png?authuser=7&hl=it)
Il nuovo strumento procstats consente di controllare l'utilizzo della memoria di app e servizi nel tempo.
![](https://developer.android.google.cn/static/images/kk-meminfo.png?authuser=7&hl=it)
Lo strumento avanzato meminfo consente di visualizzare i dettagli della memoria utilizzata per un'app.
Puoi accedere ai procstat dallo strumento ADB incluso nell'SDK Android, adb shell dumpsys procstats. Inoltre, per la profilazione on-device, consulta l'opzione per sviluppatori Statistiche di processo di seguito.
Stato e profilazione della memoria sul dispositivo
Android 4.4 include una nuova opzione per sviluppatori che semplifica l'analisi del profilo di memoria della tua app mentre è in esecuzione su qualsiasi dispositivo o emulatore. È particolarmente utile avere un'idea di come l'app utilizza la memoria e le prestazioni dei dispositivi con RAM bassa. Puoi accedere all'opzione in Impostazioni > Opzioni sviluppatore > Statistiche di processo
![Dispositivi mobili che mostrano la nuova opzione Statistiche dei processi](https://developer.android.google.cn/static/images/kk-proc-device-overview-n5.jpg?authuser=7&hl=it)
![Dispositivi mobili che mostrano i dettagli sull'utilizzo nella nuova opzione Statistiche dei processi](https://developer.android.google.cn/static/images/kk-proc-device-detail-n5.jpg?authuser=7&hl=it)
Le statistiche di processo sono un modo pratico per controllare l'utilizzo della memoria da parte dell'app. Puoi confrontare la tua app con altre app e aumentare lo zoom su dati specifici relativi alla tua app o ai suoi servizi in background.
L'opzione Statistiche di processo mostra una serie di metriche di alto livello sull'utilizzo della memoria nella tua app, in base ai dati raccolti utilizzando il nuovo servizio Procstats. Nella schermata principale puoi vedere un riepilogo dello stato della memoria di sistema. Il verde indica la quantità relativa di tempo trascorsa con un utilizzo ridotto della RAM, il giallo indica un utilizzo moderato della RAM e il rosso indica un utilizzo elevato (critico) della RAM
Sotto il riepilogo è presente un elenco che riassume il carico di memoria sul sistema di ogni app. Per ogni app, una barra blu indica il carico di memoria calcolato relativo (runtime x avg_pss) del processo, mentre una percentuale percentuale indica la quantità relativa di tempo trascorso in background. Puoi filtrare l'elenco in modo da visualizzare solo i processi in primo piano, in background o memorizzati nella cache e puoi includere o escludere i processi di sistema. Puoi anche modificare la durata dei dati raccolti in 3, 6, 12 o 24 ore e puoi includere o escludere la memoria di Google.
Tocca l'app per esaminare più da vicino l'utilizzo isolato della memoria di una specifica app. Per ogni app, ora puoi vedere un riepilogo della memoria utilizzata e la percentuale dell'intervallo di raccolta su cui è stata eseguita l'app. Puoi anche vedere l'utilizzo medio e massimo nel periodo di raccolta, nonché sotto i servizi dell'app e la percentuale di tempo di esecuzione.
L'analisi dell'app utilizzando i dati in Statistiche di processo può rivelare problemi e suggerire possibili ottimizzazioni per l'app. Ad esempio, se la tua app viene eseguita più a lungo del previsto o se utilizza troppa memoria in un determinato periodo di tempo, potrebbero esserci bug nel codice che puoi risolvere per migliorare le prestazioni dell'app, soprattutto quando viene eseguita su un dispositivo con poca RAM.