Android KitKat

Android 4.4 su smartphone e tablet

Ti diamo il benvenuto in Android 4.4 KitKat.

Android KitKat offre tutte le funzionalità più innovative, belle e utili di Android su più dispositivi in tutto il mondo.

Questo documento fornisce un'idea delle novità per gli sviluppatori.

Scopri di più su KitKat per i consumatori all'indirizzo www.android.com.

Rendere Android accessibile a tutti

Android 4.4 è progettato per funzionare in modo rapido, scorrevole e reattivo su una gamma molto più ampia di dispositivi rispetto al passato, inclusi milioni di dispositivi entry-level in tutto il mondo con minimo 512 MB di RAM.

KitKat semplifica tutti i componenti principali per ridurre l'utilizzo della memoria e introduce nuove API e nuovi strumenti per aiutarti a creare applicazioni innovative, adattabili e con un utilizzo efficiente della memoria.

Gli OEM che sviluppano la prossima generazione di dispositivi Android possono usufruire di consigli e opzioni mirati per eseguire Android 4.4 in modo efficiente, anche su dispositivi con poca memoria. La regolazione della cache del codice JIT di Dalvik, l'unione di pagine dello stesso kernel (KSM), lo scambio in zRAM e altre ottimizzazioni aiutano a gestire la memoria. Le nuove opzioni di configurazione consentono agli OEM di ottimizzare i livelli di memoria insufficiente per i processi, impostare le dimensioni della cache delle immagini, controllare il recupero della memoria e altro ancora.

In Android stesso, le modifiche al sistema migliorano la gestione della memoria e riducono l'impronta di memoria. I processi di sistema di base vengono ridotti per utilizzare meno heap e ora proteggono in modo più aggressivo la memoria del sistema dalle app che consumano grandi quantità di RAM. Quando vengono avviati più servizi contemporaneamente, ad esempio quando cambia la connettività di rete, Android ora li avvia in sequenza, in piccoli gruppi, per evitare picchi di richieste di memoria.

Per gli sviluppatori, Android 4.4 consente di offrire app efficienti e reattive su tutti i dispositivi. Una nuova API, ActivityManager.isLowRamDevice(), consente di ottimizzare il comportamento dell'app in base alla configurazione della memoria del dispositivo. Puoi modificare o disattivare le funzionalità che richiedono una grande quantità di memoria in base alle tue esigenze, a seconda dei casi d'uso che vuoi supportare sui dispositivi entry-level. Scopri di più sull'ottimizzazione delle app per i dispositivi con poca memoria qui.

I nuovi strumenti forniscono inoltre informazioni dettagliate sull'utilizzo della memoria dell'app. Lo strumento procstats descrive in dettaglio l'utilizzo della memoria nel tempo, con i tempi di esecuzione e l'impronta di memoria per le app in primo piano e i servizi in background. È inoltre disponibile una nuova opzione per gli sviluppatori per visualizzare i dati sul dispositivo. Lo strumento meminfo è stato migliorato per consentire di individuare più facilmente le tendenze e i problemi relativi alla memoria e rivela un overhead di memoria aggiuntivo che non era precedentemente visibile.

Nuove funzionalità NFC tramite Host Card Emulation

Android 4.4 introduce il nuovo supporto della piattaforma per le transazioni sicure basate su NFC tramite Host Card Emulation (HCE), per pagamenti, programmi fedeltà, accesso con carta, tessere 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 avviare transazioni con un tocco e un'app a loro scelta. Non è necessario alcun elemento di sicurezza (SE) di cui è stato eseguito il provisioning nel dispositivo. Le app possono anche utilizzare una nuova modalità Lettore per fungere da lettori per le carte HCE e altre transazioni basate su NFC.

Simbolo pagamenti contactless

Android HCE emula le smart card basate su ISO/IEC 7816 che utilizzano il protocollo ISO/IEC 14443-4 (ISO-DEP) contactless per la trasmissione. Queste carte sono attualmente utilizzate da molti sistemi, inclusa l'attuale infrastruttura di pagamento NFC EMVCO. Android utilizza gli identificatori di applicazione (AID) come definiti in ISO/IEC 7816-4 come base per instradare le transazioni alle applicazioni Android corrette.

Le app dichiarano gli AID supportati nei file manifest, insieme a un identificativo della categoria che indica il tipo di assistenza disponibile (ad es. "pagamenti"). Se più app supportano lo stesso AID nella stessa categoria, Android mostra una finestra di dialogo che consente all'utente di scegliere quale app utilizzare.

Quando l'utente esegue un pagamento con un tocco su un terminale point of sale, il sistema estrae l'AID preferito e inoltra la transazione all'applicazione corretta. L'app legge i dati della transazione e può utilizzare qualsiasi servizio locale o basato sulla rete per verificarla e poi completarla.

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 sia per le transazioni HCE sia per quelle SE. I dispositivi con Android 4.4 che supportano la tecnologia NFC includeranno la funzionalità Tap & Pay per pagamenti semplici utilizzando HCE.

Framework di stampa

Ora le app per Android possono stampare qualsiasi tipo di contenuto tramite Wi-Fi o servizi ospitati sul cloud come Google Cloud Print. Nelle app con stampa integrata, gli utenti possono trovare le stampanti disponibili, modificare i formati di carta, scegliere le pagine specifiche da stampare e stampare quasi qualsiasi tipo di documento, immagine o file.

Android 4.4 introduce il supporto della piattaforma nativa per la stampa, oltre alle API per la gestione della stampa e l'aggiunta di nuovi tipi di supporto della stampante. La piattaforma fornisce un gestore di stampa che funge da intermediario tra le app che richiedono la stampa e i servizi di stampa installati che gestiscono le richieste di stampa. Il gestore della stampa fornisce servizi condivisi e un'interfaccia utente di sistema per la stampa, offrendo agli utenti un controllo coerente della stampa da qualsiasi app. Il gestore della stampa garantisce inoltre la sicurezza dei contenuti durante il passaggio tra i processi, da un'app a un servizio di stampa.

Dispositivo mobile in orientamento orizzontale che mostra le funzionalità di assistenza alla stampante

Puoi aggiungere il supporto della 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 plug-in che aggiungono logica e servizi specifici del fornitore per la comunicazione con tipi specifici 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 per le 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 proprie app con modifiche minime al codice. Nella maggior parte dei casi, aggiungi un'azione di stampa alla barra delle azioni e un'interfaccia utente per scegliere gli elementi da stampare. Dovresti anche implementare API per creare processi di stampa, eseguire query sullo stato del gestore di stampa e annullare i processi. In questo modo puoi stampare quasi qualsiasi tipo di contenuti, dalle immagini e dai documenti locali ai dati di rete o a una visualizzazione visualizzata in una tela.

Per la massima compatibilità, Android utilizza il formato PDF come formato file principale per la stampa. Prima della stampa, l'app deve generare una versione PDF correttamente paginata dei contenuti. Per comodità, l'API di stampa fornisce classi di assistenza native e WebView per consentirti di creare PDF utilizzando le API di disegno Android standard. 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, Galleria e QuickOffice.

Framework di accesso allo spazio di archiviazione

Un nuovo framework di accesso allo spazio di archiviazione consente agli utenti di navigare e aprire facilmente documenti, immagini e altri file su tutti i loro fornitori di spazio di archiviazione dei documenti preferiti. Un'interfaccia utente standard e facile da usare consente agli utenti di navigare tra i file e accedere ai file recenti in modo coerente tra app e fornitori.

Dispositivo mobile che mostra una barra laterale aperta all'interno del nuovo framework di accesso allo spazio di archiviazione Dispositivo mobile che mostra i servizi Box integrati all'interno del nuovo framework di accesso allo spazio di archiviazione

Box e altri hanno integrato i propri servizi nel framework di accesso allo spazio di archiviazione, consentendo agli utenti di accedere facilmente ai propri documenti dalle app di tutto il sistema.

I servizi di archiviazione locale o cloud possono partecipare a questo ecosistema implementando una nuova classe di provider di documenti che incapsula i loro servizi. La classe provider include tutte le API necessarie per registrare il fornitore con il sistema e gestire la navigazione, la lettura e la scrittura dei documenti nel fornitore. 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 servizio cloud o locale, puoi fornirlo agli utenti all'interno 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 fa parte del framework. In questo modo puoi guadagnare visibilità e coinvolgere gli utenti, che troveranno più facilmente i tuoi servizi.

Se sviluppi un'app client che gestisce file o documenti, puoi eseguire l'integrazione con Storage Access Framework semplicemente utilizzando i nuovi scopi CREATE_DOCUMENT o OPEN_DOCUMENT per aprire o creare file. Il sistema mostra automaticamente l'interfaccia utente standard per la navigazione tra i documenti, inclusi tutti i fornitori di documenti disponibili.

Puoi integrare l'app client una sola volta per tutti i fornitori, senza alcun codice specifico del fornitore. Quando 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.

Storage Access Framework è integrato con l'intent GET_CONTENT esistente, pertanto gli utenti hanno accesso anche a tutti i contenuti e a tutte le origini dati precedenti dalla nuova UI di sistema per la navigazione. Le app possono continuare a utilizzare GET_CONTENT per consentire agli utenti di importare i dati. Il framework di accesso allo spazio di archiviazione e l'interfaccia utente di sistema per la navigazione consentono agli utenti di trovare e importare più facilmente i propri dati 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 provider di documenti e le app Google che funzionano con i file utilizzeranno anche il nuovo framework.

Sensori a basso consumo energetico

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 di energia da parte delle attività dei sensori in corso.

Con il raggruppamento dei sensori, Android collabora con l'hardware del dispositivo per raccogliere e inviare in modo efficiente gli eventi dei sensori in batch, anziché singolarmente man mano che vengono rilevati. In questo modo, l'elaborazione delle applicazioni del dispositivo rimane in stato di inattività a basso consumo fino al caricamento dei batch. Puoi richiedere eventi agrupati da qualsiasi sensore utilizzando un gestore di eventi standard e puoi controllare l'intervallo con cui ricevi i batch. Puoi anche richiedere l'invio immediato degli eventi tra i cicli batch.

Il raggruppamento dei sensori è ideale per casi d'uso a basso consumo e di lunga durata, come attività fisica, monitoraggio della posizione, monitoraggio e altro ancora. Può rendere la tua app più efficiente e ti consente di monitorare continuamente gli eventi del sensore, anche quando lo schermo è spento e il sistema è in sospensione.

La funzionalità di raggruppamento dei sensori è attualmente disponibile su Nexus 5 e stiamo collaborando con i nostri partner per i chipset per renderla disponibile su più dispositivi il prima possibile.

Dispositivo mobile che mostra il nuovo supporto del rilevatore di passi Dispositivo mobile che mostra il nuovo supporto del contapassi

Moves e Runtastic Pedometer utilizzano il rilevatore di passi hardware per offrire servizi a basso consumo e a lungo termine.

Rilevatore di passi e contapassi

Android 4.4 aggiunge inoltre il supporto della piattaforma per due nuovi sensori compositi, il rilevatore di passi e il contatore dei passi, che consentono alla tua app di monitorare i passi quando l'utente cammina, corre o sale le scale. Questi nuovi sensori sono implementati in hardware per 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 a ogni passo. Il contapassi monitora il numero totale di passi dall'ultimo riavvio del dispositivo e attiva un evento a ogni variazione del conteggio dei passi. Poiché la logica e la gestione dei sensori sono integrate nella piattaforma e nell'hardware di base, non è necessario mantenere i tuoi algoritmi di rilevamento nell'app.

I sensori di rilevamento dei passi e di conteggio sono disponibili su Nexus 5 e stiamo collaborando con i nostri partner di chipset per renderli disponibili sui nuovi dispositivi il prima possibile.

Fornitore di servizi 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 la memorizzazione e il recupero dei messaggi della tua app. Il nuovo provider SMS e le API definiscono un modello di interazione standardizzato per tutte le app che gestiscono messaggi SMS o MMS.

Oltre al nuovo provider e alle API, Android 4.4 introduce nuove ssemantiche per la ricezione dei messaggi e la scrittura al provider. Quando viene ricevuto un messaggio, il sistema lo inoltra direttamente all'app di messaggistica predefinita dell'utente utilizzando il nuovo intento SMS_DELIVER. Altre app possono comunque ascoltare i messaggi in arrivo utilizzando l'intent SMS_RECEIVED. Inoltre, ora il sistema consente solo all'app predefinita di scrivere i dati dei messaggi sul provider, anche se altre app possono leggerli in qualsiasi momento. Le app che non sono quelle predefinite dell'utente possono comunque inviare messaggi: il sistema gestisce la scrittura di questi messaggi al fornitore per conto dell'app, in modo che gli utenti possano visualizzarli nell'app predefinita.

Il nuovo provider e la nuova semantica contribuiscono a migliorare l'esperienza dell'utente quando sono installate più app di messaggistica e ti aiutano a creare nuove funzionalità di messaggistica con API completamente supportate e compatibili con le versioni successive.

Nuovi modi per creare app bellissime

Dispositivo mobile che mostra la nuova funzionalità della modalità immersiva

Una nuova modalità immersiva consente alle app di utilizzare ogni pixel sullo schermo per mostrare contenuti e acquisire eventi tocco.

Modalità immersiva a schermo intero

Ora le tue app possono utilizzare ogni pixel sullo schermo del dispositivo per mostrare i tuoi contenuti e acquisire eventi tocco. Android 4.4 aggiunge una nuova modalità immersiva a schermo intero che consente di creare UI senza bordi che si estendono da un'estremità all'altra su smartphone e tablet, nascondendo tutta l'interfaccia utente di sistema, come la barra di stato e la barra di navigazione. È ideale per contenuti visivi avanzati come foto, video, mappe, libri e giochi.

Nella nuova modalità, l'interfaccia utente del sistema rimane nascosta, anche quando gli utenti interagiscono con la tua app o il tuo gioco. Puoi acquisire gli eventi tocco da qualsiasi punto dello schermo, anche nelle aree che altrimenti sarebbero occupate dalle barre del sistema. In questo modo, puoi creare un'interfaccia utente più grande, più ricca e più immersiva nella tua app o nel tuo gioco, nonché ridurre le distrazioni visive.

Per garantire agli utenti un accesso sempre facile e coerente all'interfaccia utente di sistema dalla modalità immersiva a schermo intero, Android 4.4 supporta un nuovo gesto: in modalità immersiva, ora un scorrimento dal bordo superiore o inferiore dello schermo rivela l'interfaccia utente di sistema.

Per tornare alla modalità immersiva, gli utenti possono toccare lo schermo al di fuori dei limiti delle barre o attendere un breve periodo di tempo per l'auto-occultamento delle barre. 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 diverse azioni. Molte app utilizzano anche l'animazione per aiutare gli utenti a comprendere il loro 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 di transizioni.

Il framework di transizione consente di definire scene, in genere gerarchie di visualizzazione e transizioni, che descrivono come animare o trasformare le scene quando l'utente vi entra o ne 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à. Esiste anche un tipo di transizione automatica che attenua, sposta e ridimensiona automaticamente le visualizzazioni durante il cambio di scena. Inoltre, puoi definire transizioni personalizzate che animano le proprietà più importanti per la tua app e, se necessario, puoi collegare i tuoi stili di animazione.

Con il framework di transizione 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 visualizzazioni e poi chiedere a TransitionManager di eseguire automaticamente una transizione ritardata su queste modifiche.

Una volta configurate 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, nel fotogramma successivo, inizieranno automaticamente le animazioni che animano le modifiche specificate.

UI di sistema traslucida

Le app possono utilizzare nuovi stili di finestra per richiedere barre di sistema traslucide.

Per un controllo personalizzato delle transizioni che vengono eseguite tra scene specifiche nel flusso dell'applicazione, puoi utilizzare TransitionManager. TransitionManager consente di definire la relazione tra le scene e le transizioni eseguite per modifiche specifiche delle scene.

Stile dell'interfaccia utente di sistema traslucido

Per ottenere il massimo impatto dai tuoi contenuti, ora puoi utilizzare nuovi stili di finestre e temi per richiedere l'interfaccia utente di sistema traslucida, inclusa la barra di stato e la barra di navigazione. Per garantire la leggibilità dei pulsanti della barra di navigazione o delle informazioni della barra di stato, vengono visualizzati gradienti sottili dietro le barre di sistema. Un caso d'uso tipico è un'app che deve essere visualizzata su uno sfondo.

Accesso alle notifiche migliorato

Ora i servizi di ascoltatori di notifiche possono vedere più informazioni sulle notifiche in arrivo create utilizzando le API di Notification Builder. I servizi di ascolto possono accedere alle azioni di una notifica, nonché a nuovi campi extra (testo, icona, immagine, avanzamento, cronometro e molti altri) per estrarre informazioni più chiare sulla notifica e presentarle in modo diverso.

Logo di Chromium WebView

WebView di Chromium

Android 4.4 include un'implementazione completamente nuova di WebView basata su Chromium. La nuova WebView di Chromium offre il supporto più recente per gli standard, le prestazioni e la compatibilità per creare e visualizzare i tuoi contenuti basati sul web.

Chromium WebView offre un'ampia assistenza per HTML5, CSS3 e JavaScript. supporta la maggior parte delle funzionalità HTML5 disponibili in Chrome per Android 30. Inoltre, offre una versione aggiornata del motore JavaScript (V8) che offre prestazioni JavaScript notevolmente migliorate.

Inoltre, la nuova WebView di Chromium supporta il debug remoto tramite Chrome DevTools. Ad esempio, puoi utilizzare gli Strumenti per sviluppatori di Chrome sulla tua macchina di sviluppo per ispezionare, eseguire il debug e analizzare i contenuti di WebView in tempo reale su un dispositivo mobile.

Il nuovo WebView di Chromium è incluso su tutti i dispositivi compatibili con Android 4.4 e versioni successive. Puoi usufruire subito del nuovo WebView e apportare modifiche minime alle app e ai contenuti esistenti. Nella maggior parte dei casi, la migrazione dei contenuti alla nuova implementazione avviene 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 ti consente di avviare e interrompere la registrazione su un dispositivo collegato all'ambiente Android SDK tramite USB. È un ottimo nuovo modo 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 i contenuti dello schermo del dispositivo e salvarli come file MP4 sul dispositivo. Puoi registrare con qualsiasi risoluzione e velocità in bit supportate dal dispositivo e l'output manterrà le proporzioni del display. Per impostazione predefinita, l'utilità seleziona una risoluzione uguale o simile alla risoluzione del display del dispositivo nell'orientamento corrente. Al termine della registrazione, puoi condividere il video direttamente dal tuo dispositivo o trasferire il file MP4 sul computer host per la post-produzione.

Se la tua app riproduce video o altri contenuti protetti che non vuoi che vengano acquisiti dalla Registratore schermo, puoi utilizzare SurfaceView.setSecure() per contrassegnarli 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.

Cambio di risoluzione tramite la riproduzione adattiva

Android 4.4 offre il supporto formale per la riproduzione adattiva nel framework multimediale Android. La riproduzione adattiva è una funzionalità facoltativa dei decodificatori video per MPEG-DASH e altri formati che consente di modificare la risoluzione senza interruzioni durante la riproduzione. Il client può iniziare a fornire al decoder frame video di input di una nuova risoluzione e la risoluzione dei buffer di output cambia automaticamente e senza un intervallo significativo.

Il passaggio di risoluzione in Android 4.4 consente alle app multimediali di offrire un'esperienza di streaming video notevolmente migliore. Le app possono verificare il supporto della riproduzione adattiva in fase di esecuzione utilizzando le API esistenti e implementare il passaggio di risoluzione utilizzando le nuove API introdotte in Android 4.4.

Crittografia comune per DASH

Android ora supporta la crittografia comune (CENC) per MPEG-DASH, fornendo uno schema DRM multipiattaforma standard per la gestione e la protezione dei contenuti. Le app possono sfruttare CENC tramite il framework DRM modulare di Android e le API di piattaforma per il supporto di DASH.

HTTP Live Streaming

Android 4.4 aggiorna il supporto HTTP Live Streaming (HLS) della piattaforma a un superset della versione 7 della specifica HLS (versione 4 del protocollo). Per ulteriori dettagli, consulta la bozza IETF.

Tunneling audio al DSP

Per una riproduzione audio ad alte prestazioni e a basso consumo, Android 4.4 aggiunge il supporto della piattaforma per il tunneling audio a un DSP (Digital Signal Processor) nel chipset del dispositivo. Con il tunneling, la decodifica audio e gli effetti di output vengono trasferiti al DSP, risvegliando l'unità di elaborazione delle applicazioni meno spesso e consumando meno batteria.

Il tunneling audio può migliorare notevolmente la durata della batteria per scenari di utilizzo come l'ascolto di musica tramite un auricolare con lo schermo spento. Ad esempio, con il tunneling audio, Nexus 5 offre un tempo di riproduzione audio totale off-network fino a 60 ore, un aumento di oltre il 50% rispetto all'audio non sottoposto a tunneling.

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 di aumento del volume

Visualizzazione di come l'effetto LoudnessEnhancer può rendere più udibili i contenuti vocali.

Il tunneling audio richiede il supporto nell'hardware del dispositivo. Al momento il tunneling audio è disponibile su Nexus 5 e 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 utilizzarlo in modo creativo nei visualizzatori di musica o per implementare la misurazione della riproduzione in un media player.

Potenziatore di volume

Le applicazioni di riproduzione multimediale possono aumentare l'intensità dei contenuti vocali utilizzando il nuovo effetto LoudnessEnhancer, che agisce come compressore con costanti di tempo appositamente sintonizzate per la voce.

Timestamp audio per una sincronizzazione AV migliorata

Ora il framework audio può segnalare gli 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 determinato frame audio verrà (o è stato) presentato all'utente off-device. Puoi utilizzare le informazioni sui timestamp per sincronizzare con maggiore precisione l'audio con i frame video.

Wi-Fi CERTIFIED Miracast™

Ora i dispositivi con Android 4.4 possono essere certificati come compatibili con Miracast in base alla specifica Wi-Fi Display della Wi-Fi Alliance. Per facilitare i test, una nuova opzione per gli sviluppatori di display wireless consente di visualizzare i controlli e le impostazioni di configurazione avanzate per la certificazione di display wireless. Puoi accedere all'opzione in Impostazioni > Opzioni sviluppatore > Certificazione display wireless. Nexus 5 è un display wireless con certificazione Miracast.

RenderScript Compute

Grafico delle ottimizzazioni di Renderscript

Benchmark delle prestazioni di Android 4.4 rispetto ad Android 4.3 eseguiti sugli stessi dispositivi (Nexus 7, Nexus 10).

Miglioramenti continui delle prestazioni

Quando le tue app utilizzano RenderScript, beneficiano di un ottimizzazione continua del rendimento nel runtime di RenderScript stesso, senza dover essere ricompilate. Il grafico a destra mostra i miglioramenti delle prestazioni in Android 4.4 su due chipset molto diffusi.

Accelerazione GPU

Qualsiasi app che utilizza RenderScript su un dispositivo supportato beneficia dell'accelerazione GPU, senza modifiche al codice o ricompilarzioni. Da quando Nexus 10 ha debuttato con l'accelerazione GPU di RenderScript, diversi altri partner hardware hanno aggiunto il supporto.

Ora, con Android 4.4, l'accelerazione GPU è disponibile su Nexus 5, nonché su Nexus 4, Nexus 7 (2013) e Nexus 10. Stiamo collaborando con i nostri partner per renderla disponibile su più dispositivi il prima possibile.

RenderScript nell'Android NDK

Ora puoi sfruttare RenderScript direttamente dal tuo codice nativo. Una nuova API C++ nell'Android Native Development Kit (NDK) consente di accedere alle stesse funzionalità di RenderScript disponibili tramite le API del framework, tra cui istruzioni intrinseche dello script, kernel personalizzati e altro ancora.

Se hai attività di grandi dimensioni e con un'elevata richiesta di prestazioni da gestire in codice nativo, puoi eseguire queste attività utilizzando RenderScript e integrarle con il tuo codice nativo. RenderScript offre ottime prestazioni su un'ampia gamma di dispositivi, con il supporto automatico di CPU, GPU e altri processori multi-core.

Quando crei un'app che utilizza RenderScript tramite l'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 del framework.

Grafica

GLES2.0 SurfaceFlinger

Android 4.4 esegue l'upgrade di SurfaceFlinger da OpenGL ES 1.0 a OpenGL ES 2.0.

Nuovo supporto di Hardware Composer per i display virtuali

L'ultima versione di Android Hardware Composer, HWComposer 1.3, supporta la composizione hardware di un 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 multimediali e a basso consumo. Bluetooth HID over GATT (HOGP) offre alle app un collegamento a bassa latenza con dispositivi periferici a basso consumo 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 per l'uso del vivavoce o un altro dispositivo mobile. Come estensione di Bluetooth AVRCP 1.3, ora gli utenti possono impostare il volume assoluto sul sistema dai propri dispositivi Bluetooth.

Il supporto della piattaforma per HOGP, MAP e AVRCP si basa sullo stack Bluetooth Bluedroid introdotto da Google e Broadcom in Android 4.2. L'assistenza è disponibile subito su dispositivi Nexus e altri dispositivi compatibili con Android che offrono funzionalità Bluetooth compatibili.

Trasmettitori IR

Android 4.4 introduce il supporto della piattaforma per i trasmettitori IR integrati, oltre a una nuova API e un nuovo servizio di sistema che ti consentono di creare app per sfruttarli.

Con la nuova API, puoi creare app che consentono agli utenti di controllare da remoto TV, sintonizzatori, switch e altri dispositivi elettronici nelle vicinanze. L'API consente all'app di verificare se lo smartphone o il tablet è dotato di un emettitore a infrarossi, di eseguire query sulle frequenze dell'operatore e di inviare segnali a infrarossi.

Poiché l'API è standard su tutti i dispositivi Android con Android 4.4 o versioni successive, la tua app può supportare la gamma più ampia possibile 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à connessi alla stessa rete Wi-Fi, supportando la configurazione del link diretto in tunnel Wi-Fi (TDLS).

Accessibilità

Impostazioni a livello di sistema per i sottotitoli codificati

Android 4.4 ora supporta un'esperienza di accessibilità migliore tra le app aggiungendo preferenze a livello di sistema per i sottotitoli codificati. Gli utenti possono andare a Impostazioni > Accessibilità > Sottotitoli codificati per impostare le preferenze globali per i sottotitoli codificati, ad esempio se mostrare o meno i sottotitoli codificati e la lingua, le dimensioni e lo stile del testo da utilizzare.

Ora le app che utilizzano i video possono accedere alle impostazioni dei sottotitoli codificati dell'utente e modificare la presentazione in base alle sue preferenze. Una nuova API Captioning Manager consente di controllare e monitorare le preferenze dell'utente relative ai sottotitoli codificati. Il gestore dei sottotitoli codificati ti fornisce lo stato preferito dall'utente, nonché le impostazioni internazionali, il fattore di scala e lo stile di testo preferiti. Lo stile di testo include i colori di primo piano e di sfondo, le proprietà dei bordi e il carattere.

Dispositivo mobile in orientamento orizzontale che mostra i sottotitoli codificati nelle preferenze relative ai sottotitoli codificati a livello di sistema

Ora le app possono fare riferimento alle preferenze per i sottotitoli codificati 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 utilizzare 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 codificati sui fotogrammi dei video in base alle impostazioni di sistema dell'utente. Al momento, VideoView supporta la visualizzazione automatica dei sottotitoli codificati solo in formato WebVTT.

Tutte le app che mostrano i sottotitoli codificati devono assicurarsi di controllare le preferenze per i sottotitoli codificati a livello di sistema dell'utente e di visualizzare i sottotitoli codificati il più fedelmente possibile a queste preferenze. Per saperne di più su come dovrebbero apparire combinazioni specifiche di impostazioni, puoi visualizzare un'anteprima dei sottotitoli codificati in lingue, dimensioni e stili diversi direttamente nell'app Impostazioni.

API di 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à del feedback accessibile fornendo ai servizi di accessibilità maggiori informazioni sugli elementi sullo schermo.

Nei nodi di accessibilità, ora gli sviluppatori possono determinare se un nodo è un popup, ottenere il relativo tipo di input e altro ancora. Puoi anche utilizzare nuove API per lavorare con i nodi che contengono informazioni simili a una griglia, come elenchi e tabelle. Ad esempio, ora puoi specificare nuove azioni supportate, informazioni sulle raccolte, modalità delle regioni live e altro ancora.

I nuovi eventi di accessibilità consentono agli sviluppatori di monitorare più da vicino le modifiche che si verificano nei contenuti della finestra e ora possono rilevare le modifiche nella modalità di esplorazione tocco sul dispositivo.

Supporto per gli utenti internazionali

Mirroring di Drawable per le lingue RTL

Se la tua app ha come target gli utenti che utilizzano script RTL, puoi utilizzare una nuova API per dichiarare che un elemento visibile deve essere specchiato automaticamente quando l'impostazione della lingua predefinita dell'utente include una lingua RTL.

Dichiarare un elemento drawable come sottoposto a mirroring automatico ti aiuta a evitare la duplicazione degli asset nella tua app e riduce le dimensioni dell'APK. Se hai drawable riutilizzabili sia per le presentazioni LTR che RTL, puoi dichiarare le versioni predefinite come con mirroring automatico e poi omettere questi drawable dalle risorse RTL.

L'opzione Forza layout RTL semplifica il test della localizzazione dell'app.

Puoi dichiarare vari tipi di elementi drawable come specularizzati automaticamente nel codice dell'applicazione, ad esempio bitmap, nine-patch, livello, elenco di stati e altri elementi drawable. Puoi anche dichiarare un elemento visibile come sottoposto a mirroring automatico 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 una lingua RTL, Android include una nuova opzione per gli sviluppatori per forzare la direzione del layout RTL in tutte le app.

L'opzione Forza layout RTL imposta il layout RTL per tutte le impostazioni internazionali e visualizza il testo nella lingua corrente. In questo modo puoi trovare i problemi di layout all'interno dell'app, senza doverla visualizzare in una lingua RTL. Puoi accedere all'opzione in Impostazioni > Opzioni sviluppatore > Forza direzione del layout RTL.

Miglioramenti alla sicurezza

SELinux (modalità di applicazione forzata)

Android 4.4 aggiorna la configurazione di SELinux da "permissive" a "enforced". Ciò significa che le potenziali violazioni delle norme all'interno di un dominio SELinux che ha un criterio di applicazione verranno bloccate.

Algoritmi crittografici migliorati

Android ha ulteriormente migliorato la sicurezza aggiungendo il supporto di altri due algoritmi di crittografia. È stato aggiunto il supporto dell'algoritmo di firma digitale con curva ellittica (ECDSA) al fornitore del keystore per migliorare la sicurezza della firma digitale, applicabile a scenari come la firma di un'applicazione o di una connessione di dati. La funzione di derivazione della chiave Scrypt è implementata per proteggere le chiavi di crittografia utilizzate per la crittografia completa del disco.

Ulteriori miglioramenti

Sui dispositivi multiutente, le VPN vengono ora applicate per utente. In questo modo, un utente può indirizzare tutto il traffico di rete tramite una VPN senza influire sugli altri utenti del dispositivo. Inoltre, ora Android supporta FORTIFY_SOURCE di livello 2 e tutto il codice viene compilato con queste protezioni. FORTIFY_SOURCE è stato migliorato per funzionare con clang.

Strumenti per analizzare l'utilizzo della memoria

Procstats

Un nuovo strumento chiamato procstats ti aiuta ad analizzare le risorse di memoria utilizzate dalla tua app, nonché le risorse utilizzate da altre app e da altri servizi in esecuzione sul sistema.

Procstats tiene traccia del modo in cui le app vengono eseguite nel tempo, fornendo dati sulle relative durate di esecuzione e sull'utilizzo della memoria per aiutarti a determinare il loro rendimento. Questo è particolarmente importante per le app che avviano servizi in esecuzione in background, poiché ti consente di monitorare la durata dell'esecuzione e la quantità di RAM utilizzata. Procstats raccoglierà anche i dati relativi all'utilizzo della memoria per le applicazioni in primo piano 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 monitorare il tempo di esecuzione di questi servizi e la quantità di RAM utilizzata. Procstats ti consente anche di eseguire il profiling della tua app quando è in primo piano, utilizzando l'utilizzo della memoria nel tempo per determinare il profilo della memoria complessiva.

Il nuovo strumento procstats consente di controllare l'utilizzo della memoria di app e servizi nel tempo.

Lo strumento meminfo migliorato ti consente di visualizzare i dettagli sull'utilizzo della memoria per un'app.

Puoi accedere a procstats dallo strumento adb incluso nell'SDK Android, adb shell dumpsys procstats. Inoltre, per il profiling sul dispositivo, consulta l'opzione per sviluppatori Statistiche dei processi riportata di seguito.

Stato e profilazione della memoria on-device

Android 4.4 include una nuova opzione per gli sviluppatori per semplificare l'analisi del profilo di memoria dell'app durante l'esecuzione su qualsiasi dispositivo o emulatore. È particolarmente utile per avere una visione di come la tua app utilizza la memoria e il suo rendimento su dispositivi con poca RAM. Puoi accedere all'opzione in Impostazioni > Opzioni sviluppatore > Statistiche dei processi

Dispositivo mobile che mostra la nuova opzione Statistiche dei processi Dettagli sull'utilizzo della visualizzazione mobile nella nuova opzione Statistiche sui processi

Le statistiche dei processi sono un modo pratico per controllare l'utilizzo della memoria della tua 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 Process Stats (Statistiche processo) mostra una serie di metriche di alto livello sull'utilizzo della memoria dell'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 trascorso 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 è riportato un elenco che riassume il carico della memoria di ogni app sul sistema. Per ogni app, una barra blu indica il carico della memoria calcolato relativo (runtime x avg_pss) del relativo processo e un numero percentuale indica la quantità relativa di tempo trascorso in background. Puoi filtrare l'elenco in modo da mostrare solo i processi in primo piano, in background o nella cache e puoi includere o escludere i processi di sistema. Puoi anche modificare la durata dei dati raccolti su 3, 6, 12 o 24 ore e includere o escludere la memoria uss.

Per esaminare più da vicino l'utilizzo della memoria di un'app specifica in modo isolato, tocca l'app. Per ogni app, ora puoi vedere un riepilogo della memoria consumata e la percentuale dell'intervallo di raccolta durante il quale l'app è stata in esecuzione. Puoi anche visualizzare l'utilizzo medio e massimo nel periodo di raccolta e, di seguito, i servizi dell'app e la percentuale di tempo in cui sono stati in esecuzione.

L'analisi dell'app utilizzando i dati in Statistiche dei processi può rivelare problemi e suggerire possibili ottimizzazioni per l'app. Ad esempio, se l'app è in esecuzione più a lungo del dovuto o utilizza troppa memoria per un determinato periodo di tempo, è possibile che nel codice siano presenti bug che puoi risolvere per migliorare il rendimento dell'app, in particolare quando viene eseguita su un dispositivo con poca RAM.