Jelly Bean

Android 4.3

Android 4.3 su telefono e tablet

Ti diamo il benvenuto in Android 4.3, una versione più dolce di Jelly Bean!

Android 4.3 include ottimizzazioni delle prestazioni e nuove fantastiche funzioni per utenti e sviluppatori. Questo documento offre una panoramica delle novità per gli sviluppatori.

Consulta il documento sulle API Android 4.3 per un'analisi dettagliata delle nuove API per sviluppatori.

Scopri di più sulle nuove funzionalità di Jelly Bean per gli utenti sul sito www.android.com.

Più veloce, fluido e reattivo

Android 4.3 si basa sui miglioramenti delle prestazioni già inclusi in Jelly Bean (tempo vsync, triplo buffering, latenza del tocco ridotta, incremento dell'input della CPU e rendering 2D con accelerazione hardware) e aggiunge nuove ottimizzazioni che rendono Android ancora più veloce.

Per migliorare le prestazioni grafiche, il renderer 2D con accelerazione hardware ora ottimizza il flusso dei comandi di disegno, trasformandolo in un formato GPU più efficiente riorganizzando e unendo le operazioni di disegno. Per l'elaborazione multithread, il renderer può ora utilizzare anche il multi-threading su più core della CPU per eseguire determinate attività.

Android 4.3 migliora anche il rendering per forme e testo. Forme come cerchi e rettangoli arrotondati ora vengono visualizzate a una qualità superiore e in modo più efficiente. Le ottimizzazioni del testo includono prestazioni migliorate quando si utilizzano più caratteri o set di glifi complessi (CJK), maggiore qualità di rendering quando ridimensiona il testo e rendering più veloce delle ombre.

L'allocazione del buffer delle finestre migliorata consente di assegnare più rapidamente il buffer dell'immagine per le app, riducendo il tempo necessario per avviare il rendering quando crei una finestra.

Per la grafica dalle prestazioni più elevate, Android 4.3 introduce il supporto per OpenGL ES 3.0 e lo rende accessibile alle app tramite framework e API native. Sui dispositivi supportati, il motore di rendering 2D con accelerazione hardware sfrutta OpenGL ES 3.0 per ottimizzare la gestione delle texture e aumentare la fedeltà del rendering del gradiente.

OpenGL ES 3.0 per grafica ad alte prestazioni

Android 4.3 introduce il supporto della piattaforma per Khronos OpenGL ES 3.0, fornendo giochi e altre app con funzionalità grafiche 2D e 3D ad alte prestazioni sui dispositivi supportati. Puoi sfruttare OpenGL ES 3.0 e le relative estensioni EGL utilizzando API framework o associazioni di API native tramite il Kit di sviluppo nativo per Android (NDK).

Le nuove funzionalità principali fornite in OpenGL ES 3.0 includono l'accelerazione degli effetti visivi avanzati, la compressione delle texture ETC2/EAC di alta qualità come funzionalità standard, una nuova versione del linguaggio di ombreggiatura GLSL ES con supporto per virgola mobile a 32 bit e numero intero, rendering avanzato delle texture, dimensioni delle texture e formati di buffer di rendering standardizzati.

Puoi utilizzare le API OpenGL ES 3.0 per creare immagini estremamente complesse ed efficienti che vengono eseguite su una vasta gamma di dispositivi Android compatibili e puoi supportare un singolo formato standard di compressione delle texture su questi dispositivi.

OpenGL ES 3.0 è una funzionalità facoltativa che dipende dall'hardware grafico sottostante. L'assistenza è già disponibile per i dispositivi Nexus 7 (2013), Nexus 4 e Nexus 10.

Connettività Bluetooth migliorata

Connettività con sensori e dispositivi Bluetooth Smart

Ora puoi progettare e creare app che interagiscono con l'ultima generazione di piccoli dispositivi e sensori a basso consumo che utilizzano la tecnologia Bluetooth Smart.

Android 4.3 offre un'unica API standard per interagire con i dispositivi Bluetooth Smart.

Android 4.3 introduce il supporto integrato della piattaforma per Bluetooth Smart Ready nel ruolo centrale e fornisce un set standard di API che le app possono utilizzare per rilevare dispositivi nelle vicinanze, eseguire query per servizi GATT e caratteristiche di lettura/scrittura.

Con le nuove API, le tue app possono analizzare in modo efficiente dispositivi e servizi di interesse. Per ogni dispositivo, puoi verificare la presenza di servizi GATT supportati tramite UUID e gestire le connessioni in base all'ID dispositivo e all'intensità del segnale. Puoi connetterti a un server GATT ospitato sul dispositivo e leggere o scrivere caratteristiche oppure puoi registrare un ascoltatore per ricevere notifiche ogni volta che queste caratteristiche cambiano.

Puoi implementare il supporto per qualsiasi profilo GATT. Puoi leggere o scrivere caratteristiche standard o aggiungere il supporto per caratteristiche personalizzate in base alle tue esigenze. L'app può funzionare come client o server e può trasmettere e ricevere dati in entrambe le modalità. Le API sono generiche, pertanto sarai in grado di supportare le interazioni con una varietà di dispositivi, come tag di prossimità, smartwatch, strumenti di misurazione del fitness, controller di gioco, controlli remoti, dispositivi per la salute e altro ancora.

Il supporto per Bluetooth Smart Ready è già disponibile su dispositivi Nexus 7 (2013) e Nexus 4 e nei prossimi mesi verrà supportato in un numero crescente di dispositivi compatibili con Android.

Profilo AVRCP 1.3

Android 4.3 aggiunge il supporto integrato per il Bluetooth AVRCP 1.3, in modo che le app possano supportare interazioni più complete con i dispositivi multimediali di streaming remoti. App come i media player possono sfruttare AVRCP 1.3 tramite le API client di controllo remoto introdotte in Android 4.0. Oltre all'esposizione dei controlli di riproduzione sui dispositivi remoti connessi tramite Bluetooth, le app ora possono trasmettere metadati come nome della traccia, compositore e altri tipi di metadati multimediali.

Il supporto della piattaforma per AVRCP 1.3 si basa sullo stack Bluetooth Bluedroid introdotto da Google e Broadcom in Android 4.2. L'assistenza è disponibile direttamente sui dispositivi Nexus e sugli altri dispositivi compatibili con Android che offrono la funzionalità A2DP/AVRCP.

Supporto per i profili con limitazioni

Impostazione di un profilo con limitazioni

Un proprietario di tablet può configurare uno o più profili con limitazioni nelle Impostazioni e gestirli in modo indipendente.

Impostazione di restrizioni in un profilo

La tua app può offrire limitazioni per consentire ai proprietari di gestire i contenuti dell'app quando sono in esecuzione in un profilo.

Android 4.3 estende la funzionalità multiutente per i tablet con profili con restrizioni, un nuovo modo per gestire gli utenti e le loro funzionalità su un singolo dispositivo. Grazie ai profili con limitazioni, i proprietari di tablet possono configurare rapidamente ambienti separati per ogni utente, con la possibilità di gestire restrizioni più granulari nelle app disponibili in tali ambienti. I profili con limitazioni sono ideali per amici e familiari, utenti ospiti, kiosk, dispositivi point of sale e altro ancora.

Ogni profilo con limitazioni offre uno spazio isolato e sicuro con spazio di archiviazione locale, schermate Home, widget e impostazioni propri. A differenza degli utenti, i profili vengono creati dall'ambiente del proprietario del tablet, in base alle app installate e agli account di sistema del proprietario. Il proprietario stabilisce quali app installate sono abilitate nel nuovo profilo e l'accesso agli account del proprietario è disattivato per impostazione predefinita.

Le app che devono accedere agli account del proprietario (per accesso, preferenze o altri utilizzi) possono essere attivate dichiarando un attributo "manifest" e il proprietario può esaminare e gestire queste app dalle impostazioni di configurazione del profilo.

Per gli sviluppatori, i profili con limitazioni offrono un nuovo modo per offrire più valore e controllo agli utenti. Puoi implementare le limitazioni delle app, ovvero controlli di funzionalità o contenuti supportati dalla tua app, e pubblicizzarle ai proprietari di tablet nelle impostazioni di configurazione del profilo.

Puoi aggiungere limitazioni delle app direttamente alle impostazioni di configurazione del profilo utilizzando tipi predefiniti booleani, di selezione e a selezione multipla. Se vuoi maggiore flessibilità, puoi persino lanciare la tua interfaccia utente dalle impostazioni di configurazione del profilo per offrire qualsiasi tipo di restrizione.

Quando la tua app viene eseguita in un profilo, può verificare la presenza di eventuali restrizioni configurate dal proprietario e applicarle in modo appropriato. Ad esempio, un'app multimediale potrebbe offrire una limitazione per consentire al proprietario di impostare un livello di maturità per il profilo. In fase di esecuzione, l'app potrebbe controllare l'impostazione di maturità e poi gestire i contenuti in base al livello di maturità preferito.

Se la tua app non è progettata per essere utilizzata nei profili con limitazioni, puoi disattivarla del tutto in modo che non possa essere attivata in tutti i profili con limitazioni.

Posizione e funzionalità dei sensori ottimizzate

Google Play Services offre API di posizione avanzate che puoi utilizzare nelle tue app. Android 4.3 ottimizza queste API sui dispositivi supportati con nuove funzionalità hardware e software che riducono al minimo l'utilizzo della batteria.

Il geofencing dell'hardware ottimizza l'efficienza energetica eseguendo il calcolo della posizione nell'hardware del dispositivo anziché nel software. Sui dispositivi che supportano il geofencing dell'hardware, le API Google Play Services potranno sfruttare questa ottimizzazione per risparmiare batteria mentre il dispositivo è in movimento.

La modalità Solo scansione Wi-Fi è una nuova ottimizzazione della piattaforma che consente agli utenti di mantenere attiva la ricerca di reti Wi-Fi senza connettersi a una rete Wi-Fi, per migliorare la precisione della geolocalizzazione risparmiando batteria. Ora le app che dipendono dal Wi-Fi per i servizi di geolocalizzazione possono chiedere agli utenti di attivare la modalità di sola scansione dalle impostazioni avanzate del Wi-Fi. La modalità di sola ricerca Wi-Fi non dipende dall'hardware del dispositivo ed è disponibile sulla piattaforma Android 4.3.

I nuovi tipi di sensori consentono alle app di gestire meglio le relative letture. Un vettore di rotazione del gioco consente agli sviluppatori di rilevare la rotazione del dispositivo senza doversi preoccupare delle interferenze magnetiche. I sensori giroscopio non calibrato e magometro non calibrato segnalano misurazioni non elaborate e bias stimati per le app.

Le nuove funzionalità hardware sono già disponibili sui dispositivi Nexus 7 (2013) e Nexus 4 e qualsiasi produttore di dispositivi o fornitore di chipset può integrarle nei propri dispositivi.

Nuove funzionalità multimediali

Framework DRM modulare

Per soddisfare le esigenze della nuova generazione di servizi multimediali, Android 4.3 introduce un framework DRM modulare che consente agli sviluppatori di applicazioni multimediali di integrare più facilmente DRM nei loro protocolli di streaming, ad esempio MPEG DASH (Dynamic Adaptive Streaming over HTTP, ISO/IEC 23009-1).

Attraverso una combinazione di nuove API e miglioramenti alle API esistenti, il framework Media DRM fornisce un set integrato di servizi per la gestione delle licenze e il provisioning, l'accesso a codec di basso livello e la decodifica dei dati multimediali criptati. Una nuova API MediaExtractor ti consente di ottenere i metadati PSSH per i contenuti multimediali DASH. Le app che utilizzano il framework DRM multimediale gestiscono la comunicazione di rete con un server licenze e lo streaming di dati criptati da una libreria di contenuti.

Codificatore VP8

Android 4.3 introduce il supporto integrato per la codifica VP8, accessibile da framework e API native. Per le app che utilizzano API native, la piattaforma include intestazioni delle estensioni OpenMAX 1.1.2 per supportare i profili e i livelli VP8. Il supporto della codifica VP8 include impostazioni per velocità in bit di destinazione, controllo della frequenza, frequenza fotogrammi, partizionamento dei token, resilienza agli errori, ricostruzione e filtri di loop. L'API della piattaforma introduce il supporto del codificatore VP8 in una vasta gamma di formati, per consentirti di sfruttare il formato migliore per i tuoi contenuti.

La codifica VP8 è disponibile nel software su tutti i dispositivi compatibili con Android 4.3. Per le massime prestazioni, la piattaforma supporta anche la codifica VP8 con accelerazione hardware sui dispositivi compatibili.

Codifica video da una piattaforma

A partire da Android 4.3 puoi utilizzare una piattaforma come input per un codificatore video. Ad esempio, ora puoi indirizzare uno stream da una superficie OpenGL ES all'encoder, anziché dover copiare da un buffer all'altro.

Muxer multimediale

Le app possono utilizzare le nuove API Media Muxer per combinare flussi audio e video elementari in un unico file di output. Attualmente le app possono eseguire il multiplex di un singolo stream audio MPEG-4 e di un singolo stream video MPEG-4 in un singolo file di output MPEG-4. Le nuove API sono la controparte delle API di demuxing dei contenuti multimediali introdotte in Android 4.2.

L'avanzamento della riproduzione e lo scrubbing nei client di controllo remoto

A partire da Android 4.0, i lettori multimediali e applicazioni simili sono in grado di offrire controlli di riproduzione da client di controllo remoto come la schermata di blocco del dispositivo, le notifiche e i dispositivi remoti connessi tramite Bluetooth. A partire da Android 4.3, queste applicazioni possono ora esporre l'avanzamento e la velocità della riproduzione tramite i client di controllo remoto e ricevere comandi per passare a una posizione di riproduzione specifica.

Nuovi modi per creare app fantastiche

Accesso alle notifiche

Le notifiche sono da tempo una funzionalità di Android molto diffusa perché consentono agli utenti di vedere informazioni e aggiornamenti in tutto il sistema, tutto in un unico posto. Ora in Android 4.3 le app possono osservare il flusso di notifiche con l'autorizzazione dell'utente e visualizzare le notifiche come preferisce, anche inviandole a dispositivi nelle vicinanze connessi tramite Bluetooth.

Puoi accedere alle notifiche tramite le nuove API che consentono di registrare un servizio Listener di notifica e, con l'autorizzazione dell'utente, ricevere le notifiche quando vengono visualizzate nella barra di stato. Le notifiche ti vengono inviate per intero, con tutti i dettagli relativi all'app di origine, l'ora di post, la visualizzazione e lo stile dei contenuti e la priorità. Puoi valutare i campi di interesse nelle notifiche, elaborare o aggiungere contesto dalla tua app e indirizzarli per la visualizzazione come preferisci.

La nuova API fornisce callback quando una notifica viene aggiunta, aggiornata e rimossa (perché l'utente l'ha ignorata o l'app di origine l'ha ritirata). Potrai lanciare tutti gli intent associati alla notifica o alle relative azioni, nonché ignorarli dal sistema, in modo che la tua app fornisca un'interfaccia utente completa alle notifiche.

Gli utenti mantengono il controllo su quali app possono ricevere notifiche. In qualsiasi momento possono controllare nelle Impostazioni per sapere quali app hanno accesso alle notifiche e attivare o disattivare l'accesso in base alle esigenze. L'accesso alle notifiche è disattivato per impostazione predefinita: le app possono utilizzare un nuovo intent per indirizzare l'utente direttamente alle Impostazioni e attivare il servizio listener dopo l'installazione.

Visualizza overlay

Ora puoi creare overlay trasparenti sopra a Views e ViewGroups per visualizzare una gerarchia di visualizzazione temporanea o effetti temporanei di animazione senza alterare la gerarchia del layout sottostante. Gli overlay sono particolarmente utili quando vuoi creare animazioni, ad esempio facendo scorrere una visualizzazione all'esterno del contenitore o trascinando elementi sullo schermo senza influire sulla gerarchia delle visualizzazioni.

Modalità di layout limiti ottici

Una nuova modalità di layout consente di gestire il posizionamento delle visualizzazioni all'interno di ViewGroups in base ai loro limiti ottici, anziché ai limiti dei clip. I margini del clip rappresentano il limite esterno effettivo di un widget, mentre i nuovi limiti ottici descrivono il punto in cui appare il widget all'interno dei margini del clip. Puoi usare la modalità di layout con limiti ottici per allineare correttamente i widget che utilizzano effetti visivi esterni come ombre e luminescenze.

Tipi di animazione con rotazione personalizzata

Ora le app possono definire i tipi di animazione di uscita e di ingresso utilizzati in una finestra quando il dispositivo viene ruotato. Puoi impostare le proprietà della finestra in modo da abilitare la rotazione delle finestre jump-cut, cross-fade o standard. Il sistema utilizza tipi di animazione personalizzati quando la finestra è a schermo intero e non è coperta da altre finestre.

Modalità di orientamento dello schermo

Le app possono impostare nuove modalità di orientamento per le attività per garantire che vengano visualizzate nell'orientamento corretto quando il dispositivo viene capovolto. Inoltre, le app possono utilizzare una nuova modalità per bloccare lo schermo nell'orientamento attuale. Questa funzionalità è utile per le app che utilizzano la fotocamera e che vogliono disattivare la rotazione durante le riprese di video.

Intento di gestione delle risposte rapide

Android 4.3 introduce un nuovo intent pubblico che consente a qualsiasi app di gestire le risposte rapide, ovvero i messaggi inviati dall'utente in risposta a una chiamata in arrivo, senza dover rispondere alla chiamata o sbloccare il dispositivo. L'app può rimanere in ascolto dell'intent e inviare il messaggio al chiamante tramite il sistema di messaggistica. L'intent include il destinatario (chiamante) e il messaggio stesso.

Assistenza per utenti internazionali

Altre parti di Android 4.3 sono ottimizzate per le lingue RTL.

Miglioramenti a RTL

Android 4.3 include miglioramenti delle prestazioni RTL e più ampio supporto RTL nei widget UI dei framework, tra cui ProgressBar/Spinner ed ExpansionListView. Ulteriori informazioni di debug visibili tramite lo strumento uiautomatorviewer. Inoltre, altri componenti dell'interfaccia utente del sistema sono predisposti con RTL, come le notifiche, la barra di navigazione e la barra delle azioni.

Per offrire una migliore esperienza a livello di sistema negli script RTL, un maggior numero di app di sistema predefinite ora supporta i layout RTL, tra cui Avvio app, Impostazioni rapide, Telefono, Persone, Configurazione guidata, Orologio, Download e altro ancora.

Utilità per la localizzazione

Le pseudo-regioni semplificano il test della localizzazione della tua app.

Android 4.3 include anche nuove utilità e API per creare stringhe RTL migliori e testare le UI localizzate. Una nuova classe BidiFormatter fornisce una semplice API per il wrapping di stringhe Unicode, in modo che i dati dello script RTL vengano visualizzati come previsto nei messaggi LTR locali e viceversa. Per consentirti di utilizzare questa utilità in modo più ampio nelle tue app, l'API BidiFormatter è ora disponibile anche per le versioni precedenti della piattaforma tramite il pacchetto di assistenza nell'SDK Android.

Per aiutarti a gestire la formattazione della data in più impostazioni internazionali, Android 4.3 include un nuovo metodo getBestDateTimePattern() che genera automaticamente la migliore forma localizzata possibile di una data UTS Unicode per un'impostazione internazionale specificata. È un modo comodo per fornire agli utenti un'esperienza più localizzata.

Per aiutarti a testare più facilmente la tua app in altre lingue, Android 4.3 introduce pseudo-locales come nuova opzione per sviluppatori. Le pseudo-impostazioni internazionali simulano la lingua, lo script e le caratteristiche di visualizzazione associate a un'impostazione internazionale o a un gruppo di lingue. Al momento puoi eseguire un test con una pseudo-lingua per l'inglese Accent, che ti consente di vedere come funziona l'interfaccia utente con gli accenti degli script e i caratteri utilizzati in diverse lingue europee.

Accessibilità e automazione dell'interfaccia utente

A partire da Android 4.3, i servizi di accessibilità possono osservare e filtrare gli eventi chiave, ad esempio per gestire le scorciatoie da tastiera o garantire la parità di navigazione con l'input basato su gesti. Il servizio riceve gli eventi e può elaborarli secondo necessità prima che vengano trasmessi al sistema o ad altre app installate.

I servizi di accessibilità possono dichiarare nuovi attributi relativi alle funzionalità per descrivere cosa possono fare i loro servizi e quali funzionalità della piattaforma utilizzano. Ad esempio, possono dichiarare la capacità di filtrare gli eventi chiave, recuperare i contenuti delle finestre, attivare l'esplorazione al tocco o attivare le funzioni di accessibilità web. In alcuni casi, i servizi devono dichiarare un attributo di funzionalità prima di poter accedere alle funzionalità della piattaforma correlate. Il sistema utilizza gli attributi relativi alle funzionalità del servizio per generare una finestra di dialogo di attivazione per gli utenti, in modo che possano vedere e accettare le funzionalità prima del lancio.

Basato sul framework di accessibilità di Android 4.3, un nuovo framework di automazione dell'interfaccia utente consente ai test di interagire con l'interfaccia utente del dispositivo simulando le azioni degli utenti e introspezionando i contenuti dello schermo. Con il framework di automazione dell'interfaccia utente puoi eseguire operazioni di base, impostare la rotazione dello schermo, generare eventi di input, acquisire screenshot e molto altro ancora. È un modo efficace per automatizzare i test in scenari utente realistici, comprese azioni o sequenze su più app.

Aziende e sicurezza

Configurazione Wi-Fi per reti WPA2-Enterprise

Ora le app possono configurare le credenziali Wi-Fi necessarie per le connessioni ai punti di accesso WPA2 aziendali. Gli sviluppatori possono utilizzare nuove API per configurare le credenziali EAP (Extensible Authentication Protocol) ed EAP Encapsulated EAP (Fase 2) per i metodi di autenticazione utilizzati a livello aziendale. Le app autorizzate ad accedere al Wi-Fi e a cambiarle possono configurare le credenziali di autenticazione per diversi metodi di autenticazione EAP e di fase 2.

Sandbox Android rafforzata da SELinux

Android ora utilizza SELinux, un sistema di controllo dell'accesso (MAC) obbligatorio nel kernel Linux per potenziare la sandbox delle applicazioni basata su UID. In questo modo, protegge il sistema operativo da potenziali vulnerabilità della sicurezza.

Miglioramenti KeyChain

L'API KeyChain ora fornisce un metodo che consente alle applicazioni di confermare che le chiavi a livello di sistema sono associate a una radice di attendibilità hardware per il dispositivo. In questo modo è possibile creare o archiviare chiavi private che non possono essere esportate dal dispositivo, anche in caso di compromissione della directory radice o del kernel.

Provider archivio chiavi Android

Android 4.3 introduce un provider di archivio chiavi e API che consentono alle applicazioni di creare chiavi per uso esclusivo. Utilizzando le API, le app possono creare o archiviare chiavi private che non possono essere visualizzate o utilizzate da altre app e possono essere aggiunte all'archivio chiavi senza alcuna interazione dell'utente.

Il provider dell'archivio chiavi offre gli stessi vantaggi in termini di sicurezza offerti dall'API KeyChain per le credenziali a livello di sistema, ad esempio l'associazione di credenziali a un dispositivo. Le chiavi private nell'archivio chiavi non possono essere esportate dal dispositivo.

Limita Setuid dalle app per Android

La partizione /system è ora montata nosuid per i processi generati dallo zigote, impedendo alle app per Android di eseguire i programmi setuid. Questo riduce la superficie di attacco radice e la probabilità di potenziali vulnerabilità di sicurezza.

Nuovi modi per analizzare il rendimento

Systrace utilizza una nuova sintassi dei comandi e consente di raccogliere più tipi di dati di profilazione.

Logging di Systrace avanzato

Android 4.3 supporta una versione avanzata dello strumento Systrace, più facile da usare e che ti dà accesso a più tipi di informazioni per profilare le prestazioni della tua app. Ora puoi raccogliere dati di traccia da moduli hardware, funzioni del kernel, VM Dalvik tra cui garbage collection, caricamento delle risorse e altro ancora.

Android 4.3 include anche nuove API Trace che puoi utilizzare nelle tue app per contrassegnare sezioni specifiche di codice da tracciare utilizzando gli eventi di inizio/fine di Systrace. Quando le sezioni di codice contrassegnate vengono eseguite, il sistema scrive gli eventi di inizio/fine nel log di traccia. L'impatto sulle prestazioni della tua app è minimo, pertanto i tempi indicati ti offrono una visione accurata di ciò che sta facendo la tua app.

Puoi visualizzare gli eventi specifici dell'app in una sequenza temporale nel file di output di Systrace e analizzare gli eventi nel contesto di altri dati di traccia del kernel e dello spazio utente. Insieme ai tag Systrace esistenti, le sezioni personalizzate delle app possono offrire nuovi modi per comprendere le prestazioni e il comportamento delle tue app.

Profilazione della GPU sullo schermo in Android 4.3.

Profilazione GPU sullo schermo

Android 4.3 aggiunge nuove opzioni per sviluppatori per aiutarti ad analizzare le prestazioni della tua app e a individuare i problemi di rendering su qualsiasi dispositivo o emulatore.

Nell'opzione Profilo GPU per il rendering ora puoi visualizzare la frequenza fotogrammi effettiva della tua app sullo schermo mentre è in esecuzione. Puoi scegliere di visualizzare i dati di profilazione come grafici a barre o a linee sullo schermo, con i colori che indicano il tempo dedicato alla creazione dei comandi di disegno (blu), all'invio dei comandi (arancione) e all'attesa del completamento dei comandi (giallo). Il sistema aggiorna continuamente i grafici sullo schermo, visualizzando un grafico per ogni attività visibile, inclusa la barra di navigazione e la barra di notifica.

Una linea verde evidenzia la soglia di 16 ms per le operazioni di rendering, in modo che tu possa valutare la frequenza fotogrammi effettiva dell'app rispetto a un obiettivo di 60 f/s (perché 1/60 di secondo equivale a circa 16 ms). Se noti operazioni che superano la linea verde, puoi analizzarle ulteriormente utilizzando Systrace e altri strumenti.

Sui dispositivi con Android 4.2 e versioni successive, le opzioni per sviluppatori sono nascoste per impostazione predefinita. Puoi visualizzarle in qualsiasi momento toccando 7 volte Impostazioni > Informazioni sul telefono > Numero build su qualsiasi dispositivo Android compatibile.

Avviso StrictMode per gli URI dei file

L'ultima aggiunta allo strumento StrictMode è un vincolo del criterio che segnala quando la tua app espone un URI file:// al sistema o a un'altra app. In alcuni casi, l'app ricevente potrebbe non avere accesso al percorso URI file://, pertanto quando condividi file tra app, devi usare un URI content:// (con l'autorizzazione appropriata). Questo nuovo criterio consente di individuare e risolvere questi casi. Se cerchi un modo pratico per archiviare ed esporre i file ad altre app, prova a utilizzare il fornitore di contenuti FileProvider disponibile nella Libreria di assistenza.

Android 4.2

Android 4.2 su telefono e tablet

Ti diamo il benvenuto in Android 4.2, l'ultima versione di Jelly Bean!

Android 4.2 offre ottimizzazioni delle prestazioni, un'interfaccia utente di sistema aggiornata e nuove fantastiche funzionalità per utenti e sviluppatori. Questo documento offre una panoramica delle novità per gli sviluppatori.

Consulta il documento sulle API Android 4.2 per un'analisi dettagliata delle nuove API per sviluppatori.

Scopri di più sulle nuove funzionalità di Jelly Bean per gli utenti sul sito www.android.com.

Più veloce, fluido e reattivo

Android 4.2 si basa sui miglioramenti delle prestazioni già inclusi in Jelly Bean, tra cui tempo vsync, triplo buffering, latenza del tocco ridotta e incremento dell'input della CPU, e aggiunge nuove ottimizzazioni che rendono Android ancora più veloce.

I miglioramenti apportati al rendering 2D con accelerazione hardware rendono le animazioni più comuni, come lo scorrimento e lo scorrimento, più fluide e veloci. In particolare, il disegno è ottimizzato per livelli, ritagli e determinate forme (rettali arrotondati, cerchi e ovali).

Una serie di ottimizzazioni del rendering di WebView rende lo scorrimento delle pagine web più fluido e privo di tremolii e ritardi.

Renderscript Compute di Android è la prima piattaforma di calcolo integrata per l'esecuzione diretta su una GPU per dispositivi mobili. Sfrutta automaticamente le risorse di calcolo GPU quando possibile, migliorando drasticamente le prestazioni per la grafica e l'elaborazione delle immagini. Qualsiasi app che utilizza Renderscript su un dispositivo supportato può trarre vantaggio immediatamente da questa integrazione della GPU senza ricompilare.

UI perfezionata e aggiornata

Android 4.2 perfeziona l'esperienza utente di Jelly Bean e introduce modelli di interfaccia utente Android familiari, come la barra di stato, la barra di sistema e la finestra di notifica, su tutti i tablet.

Tutte le dimensioni degli schermi ora presentano la barra di stato in alto, con accesso a discesa alle notifiche e un nuovo menu Impostazioni rapide. Nella parte inferiore si trova la nota barra di sistema, con pulsanti facilmente accessibili da entrambe le mani. Il vassoio di applicazioni è disponibile anche per schermi di tutte le dimensioni.

Un tablet, molti utenti

Ora diversi utenti possono condividere un singolo tablet Android e ogni utente può accedere comodamente a uno spazio utente dedicato. Gli utenti possono passare al proprio spazio con un solo tocco dalla schermata di blocco.

Su un dispositivo multiutente, Android offre a ogni utente un ambiente separato, compreso l'archiviazione della scheda SD emulata specifica per l'utente. Gli utenti dispongono inoltre di schermate Home, widget, account, impostazioni, file e app propri e il sistema li mantiene separati. Tutti gli utenti condividono i servizi principali del sistema, ma il sistema garantisce che le applicazioni e i dati di ogni utente rimangano isolati. In effetti, ogni utente ha un proprio dispositivo Android.

Gli utenti possono installare e disinstallare le app in qualsiasi momento nei propri ambienti. Per risparmiare spazio di archiviazione, Google Play scarica un APK solo se non è già stato installato sul dispositivo da un altro utente. Se l'app è già installata, Google Play registra l'installazione del nuovo utente come di consueto, ma non scarica un'altra copia dell'app. Più utenti possono eseguire la stessa copia di un APK perché il sistema crea una nuova istanza per ogni utente, inclusa una directory di dati specifica dell'utente.

Per gli sviluppatori, l'assistenza multiutente è trasparente: le app non devono fare nulla di particolare per funzionare normalmente in un ambiente multiutente e non sono necessarie modifiche agli APK esistenti o pubblicati. Il sistema gestisce la tua app in ogni spazio utente come in un ambiente con singolo utente.

Nuovi modi per coinvolgere gli utenti

Widget Calendar sulla schermata di blocco

Puoi estendere i widget di app in modo che vengano eseguiti sulla schermata di blocco per accedere rapidamente ai tuoi contenuti.

Widget schermata di blocco

In Android 4.2, gli utenti possono inserire widget di app direttamente nelle proprie schermate di blocco per accedere immediatamente ai contenuti delle loro app preferite senza dover sbloccare il dispositivo. Gli utenti possono aggiungere fino a cinque widget sulla schermata di blocco, scegliendo tra quelli forniti dalle app installate. La schermata di blocco mostra ogni widget nel proprio riquadro, consentendo agli utenti di scorrere a sinistra e a destra per visualizzare i diversi riquadri e i relativi widget.

Come tutti i widget delle app, anche quelli della schermata di blocco possono visualizzare qualsiasi tipo di contenuto e accettare l'interazione diretta dell'utente. Possono essere completamente indipendenti, ad esempio un widget che offre controlli per la riproduzione di musica, oppure consentire agli utenti di passare direttamente a un'attività nell'app dopo aver eseguito lo sblocco secondo le necessità.

Per gli sviluppatori, i widget della schermata di blocco offrono un nuovo modo straordinario per coinvolgere gli utenti. Ti consentono di mostrare i tuoi contenuti agli utenti in una località che visitano spesso e ti offrono maggiori opportunità di portarli direttamente nella tua app.

Puoi sfruttare questa nuova funzionalità creando un nuovo widget dell'app o estendendo un widget esistente nella schermata Home. Se l'app include già widget della schermata Home, puoi estenderli alla schermata di blocco con una modifica minima. Per offrire agli utenti un'esperienza ottimale, puoi aggiornare il widget in modo che utilizzi l'area a schermo intero di blocco, se disponibile, e ridimensionarlo quando necessario su schermi più piccoli. Puoi anche aggiungere ai widget funzionalità che potrebbero essere particolarmente utili o pratiche nella schermata di blocco.

Daydream

Daydream è una modalità salvaschermo interattiva che si avvia quando il dispositivo dell'utente è inserito nel dock o in carica. In questa modalità, il sistema avvia un daydream, un servizio di contenuti remoti fornito da un'app installata, come salvaschermo del dispositivo. L'utente può attivare Daydream dall'app Impostazioni, quindi scegliere il sogno a occhi aperti da visualizzare.

Daydream unisce le migliori funzionalità degli sfondi animati e dei widget della schermata Home, ma è più potente. Ti consentono di offrire qualsiasi tipo di contenuto in un contesto completamente nuovo, con interazioni degli utenti come sfogliare le foto, riprodurre audio o video o accedere direttamente all'app con un solo tocco.

Poiché sogna a occhi aperti può avviarsi automaticamente quando un dispositivo è in carica o agganciato alla base, offre alla tua app un ottimo modo per supportare nuovi tipi di esperienze utente, come la modalità Leanback o Exhibition, la modalità demo o kiosk e la "modalità Attract", il tutto senza richiedere un hardware speciale.

Modalità salvaschermo Daydream

Daydream ti consente di creare potenti salvaschermi interattivi che mostrano qualsiasi tipo di contenuto.

Daydreams è simile ad Attività e può fare tutto ciò che può fare Attività, dal rendering di una gerarchia di interfaccia utente (senza utilizzare RemoteView) al disegno diretto utilizzando Canvas, OpenGL, SurfaceTexture e altro ancora. Possono riprodurre video e audio e accettare persino l'interazione diretta dell'utente. Tuttavia, i sogni non sono attività e non influiscono sullo stack, né vengono visualizzati in Recenti e non possono essere avviati direttamente dalla tua app.

L'implementazione di Daydream è semplice e puoi sfruttare componenti e risorse dell'interfaccia utente che hai già creato per altre parti della tua app. Puoi fornire più sogni a occhi aperti nella tua app e offrire impostazioni di visualizzazione e dei contenuti distinte per ciascuna.

Supporto per display esterni

Android 4.2 introduce il supporto della piattaforma per i display esterni che va ben oltre il mirroring: le app ora possono indirizzare contenuti unici a uno o più display collegati a un dispositivo Android. Le app possono basarsi su questo per offrire agli utenti nuovi tipi di esperienze di interazione e intrattenimento.

Gestore display

Le app interagiscono con i display tramite un nuovo servizio di sistema di gestione dei display. La tua app può enumerare i display e controllarne le funzionalità, tra cui dimensioni, densità, nome visualizzato, ID, supporto per i video protetti e altro ancora. La tua app può ricevere callback anche quando vengono aggiunti o rimossi display o quando le loro funzionalità cambiano, per gestire meglio i tuoi contenuti sui display esterni.

Finestra della presentazione

Per semplificare la visualizzazione dei contenuti su un display esterno, il framework fornisce un nuovo oggetto UI chiamato Presentazione, un tipo di finestra di dialogo che rappresenta una finestra per i contenuti della tua app su un display esterno specifico. L'app assegna solo il display da utilizzare, un tema per la finestra e qualsiasi contenuto esclusivo da mostrare. La presentazione gestisce l'aumento artificiale delle risorse e il rendering dei contenuti in base alle caratteristiche del display target.

Puoi assumere il controllo completo di due o più display indipendenti utilizzando Presentazione.

Una presentazione offre alla tua app il controllo completo della finestra di visualizzazione remota e dei relativi contenuti e ti consente di gestirla in base agli eventi di input dell'utente, come la pressione dei tasti, i gesti, gli eventi di movimento e altro ancora. Puoi utilizzare tutti i normali strumenti per creare un'interfaccia utente e visualizzare i contenuti nella presentazione, dalla creazione di una gerarchia di visualizzazioni arbitraria all'utilizzo di SurfaceView o SurfaceTexture per disegnare direttamente nella finestra per i contenuti trasmessi in streaming o le anteprime della videocamera.

Selezione display preferita

Quando sono disponibili più display esterni, puoi creare tutte le presentazioni che ti servono, ognuna delle quali mostra contenuti unici su uno specifico display. In molti casi, potresti voler mostrare i tuoi contenuti solo su un singolo display esterno, ma sempre su quello migliore per i contenuti della presentazione. A questo scopo, il sistema può aiutare la tua app a scegliere il display migliore da usare.

Per trovare il display migliore da utilizzare, la tua app può chiedere al gestore display il display di presentazione preferito del sistema e ricevere callback quando cambia. In alternativa, puoi usare il servizio router multimediale, esteso in Android 4.2, per ricevere notifiche quando un percorso video di sistema cambia. Per impostazione predefinita, la tua app può visualizzare i contenuti nell'attività principale finché non viene allegato un display della presentazione preferito, a quel punto può passare automaticamente ai contenuti della presentazione sul display preferito. Le app possono anche usare MediaRouteActionProvider e MediaRouteButton per offrire un'interfaccia utente standard per la selezione della visualizzazione.

Contenuti protetti

Per le app che gestiscono contenuti protetti o criptati, l'API di visualizzazione ora segnala le funzionalità video sicure dei display collegati. La tua app esegue query su un display per scoprire se offre un output video sicuro o buffer grafici protetti, quindi scegli lo stream o la decodifica di contenuti appropriati per rendere visibili i contenuti. Per maggiore sicurezza sugli oggetti SurfaceView, l'app può impostare un flag di sicurezza per indicare che i contenuti non devono mai apparire negli screenshot o su un output di visualizzazione non protetto, neanche se viene eseguito il mirroring.

Visualizzazione wireless

A partire da Android 4.2, gli utenti che utilizzano dispositivi supportati possono connettersi a un display esterno tramite Wi-Fi utilizzando Display Wi-Fi (una soluzione di visualizzazione wireless peer-to-peer conforme al programma di certificazione MiracastTM). Quando è connesso un display wireless, gli utenti possono riprodurre in streaming qualsiasi tipo di contenuto sullo schermo di casa, tra cui foto, giochi, mappe e altro ancora.

Le app possono sfruttare i display wireless come fanno ad altri display esterni e non sono necessarie ulteriori attività. Il sistema gestisce la connessione di rete e trasmette in streaming i contenuti della presentazione o di altri contenuti dell'app al display wireless, se necessario.

Supporto RTL nativo

Mirroring layout RTL

Ora gli sviluppatori possono eseguire il mirroring dei layout per le lingue RTL.

Android 4.2 introduce il supporto nativo completo per i layout RTL (da destra a sinistra), incluso il mirroring del layout. Con il supporto RTL nativo, puoi offrire la stessa eccezionale esperienza a tutti gli utenti, indipendentemente dal fatto che la loro lingua utilizzi uno script che legge da destra a sinistra o uno che legge da sinistra a destra.

Quando l'utente cambia la lingua di sistema con uno script da destra a sinistra, il sistema ora fornisce il mirroring automatico dei layout dell'interfaccia utente delle app e di tutti i widget delle visualizzazioni, oltre al mirroring bidi degli elementi di testo per la lettura e l'inserimento dei caratteri.

La tua app può sfruttare il Mirroring del layout RTL nell'app con il minimo sforzo. Se vuoi eseguire il mirroring dell'app, devi solo dichiarare un nuovo attributo nel file manifest dell'app e modificare tutte le proprietà di layout "left/right" in nuovi equivalenti "start/end". Il sistema quindi gestisce il mirroring e la visualizzazione della tua UI in base alle esigenze.

Per un controllo preciso dell'interfaccia utente dell'app, Android 4.2 include nuove API che consentono di gestire la direzione del layout, la direzione del testo, l'allineamento del testo, la gravità e la direzione locale nei componenti Visualizza. Puoi anche creare versioni personalizzate di layout, disegnabili e altre risorse da visualizzare quando è in uso uno script da destra a sinistra.

Per aiutarti a eseguire il debug e ottimizzare i layout personalizzati da destra a sinistra, lo strumento HierarchyViewer ora consente di visualizzare le proprietà di inizio/fine, la direzione del layout, la direzione del testo e l'allineamento del testo per tutte le viste nella gerarchia.

Miglioramenti alle lingue internazionali

Android 4.2 include una serie di ottimizzazioni di caratteri e caratteri per gli utenti internazionali:

  • Per gli utenti coreani è disponibile una nuova scelta di carattere: Nanum (나눔글꼴) gotico, un carattere Unicode progettato appositamente per la scrittura in lingua coreana.
  • Supporto migliorato per il testo verticale giapponese visualizzato nei WebView.
  • Credenza e posizionamento dei caratteri migliorati per i caratteri predefiniti di lingua indiana, thailandese, araba ed ebraico.

La tastiera Android predefinita include anche un insieme aggiornato di dizionari:

  • Dizionari migliorati per francese (con supporto bigram), inglese e russo
  • Nuovi dizionari per danese, greco, finlandese, lituano, lettone, polacco, sloveno, serbo, svedese, turco

Nuovi modi per creare una UI accattivante

Frammenti nidificati

Per un maggiore controllo sui componenti dell'interfaccia utente e per renderli più modulari, Android 4.2 ti consente di nidificare i frammenti all'interno dei frammenti. Per qualsiasi frammento, un nuovo gestore frammenti consente di inserire altri frammenti come nodi secondari nella gerarchia delle visualizzazioni.

Puoi utilizzare i frammenti nidificati in vari modi, ma sono particolarmente utili per implementare componenti UI dinamici e riutilizzabili all'interno di un componente dell'interfaccia utente che è di per sé dinamico e riutilizzabile. Ad esempio, se utilizzi ViewPager per creare frammenti che scorrono verso sinistra e destra, ora puoi inserire frammenti in ogni frammento del cercapersone.

Per consentirti di sfruttare in modo più ampio i frammenti nidificati nella tua app, questa funzionalità viene aggiunta all'ultima versione della Libreria di assistenza Android.

Accessibilità

Il sistema ora consente ai servizi di accessibilità di distinguire l'esplorazione al tocco e i gesti di accessibilità in modalità di esplorazione al tocco. Quando un utente tocca lo schermo, il sistema informa il servizio che è iniziata un'interazione touch generica. Dopodiché monitora la velocità dell'interazione touch, determina se si tratta di un'esplorazione al tocco (lenta) o di un gesto di accessibilità (veloce) e invia una notifica al servizio. Al termine dell'interazione tramite tocco, il sistema invia una notifica al servizio.

Il sistema fornisce una nuova opzione di accessibilità globale che consente a un servizio di accessibilità di aprire il menu Impostazioni rapide in base a un'azione dell'utente. In Android 4.2 è stato aggiunto anche un nuovo tipo di feedback sull'accessibilità per i dispositivi braille.

Per fornire ai servizi di accessibilità informazioni sul significato di Visualizzazioni ai fini dell'accessibilità, il framework fornisce nuove API per associare una vista come etichetta di un'altra vista. L'etichetta di ogni vista è disponibile per i servizi di accessibilità tramite AccessibilityNodeInfo.

Fotocamera migliorata con HDR

Android 4.2 introduce una nuova interfaccia hardware della fotocamera e una nuova pipeline per migliorare le prestazioni. Sui dispositivi supportati, le app possono utilizzare una nuova modalità scena della fotocamera HDR per acquisire un'immagine utilizzando tecniche di immagine ad alta gamma dinamica.

Inoltre, il framework ora fornisce un'API per consentire alle app di controllare se è possibile disattivare il suono dell'otturatore della fotocamera. Le app possono quindi consentire all'utente di disattivare il suono o scegliere un suono alternativo al posto del suono standard dell'otturatore, che è consigliato.

Calcolo Renderscript

In Android 4.2, Renderscript Compute introduce nuove funzionalità di scripting, nuove ottimizzazioni e l'integrazione diretta della GPU per le massime prestazioni nelle operazioni di calcolo.

Script filtro

Filtroscript è un sottoinsieme di Renderscript incentrato sull'elaborazione ottimizzata delle immagini su un'ampia gamma di chipset di dispositivi. Gli sviluppatori possono scrivere le proprie operazioni di elaborazione delle immagini in Filtrascript utilizzando l'API di runtime Renderscript standard, ma rispettando vincoli più rigidi che garantiscono una compatibilità più ampia e una migliore ottimizzazione su CPU, GPU e DSP.

Filtroscript è ideale per operazioni semplici di elaborazione e calcolo dell'immagine con l'accelerazione hardware, come quelle che potrebbero essere scritte per gli Shader di frammenti OpenGL ES. Grazie a una serie di vincoli relativamente all'hardware, le operazioni vengono ottimizzate e accelerate su più tipi di chipset di dispositivi. Qualsiasi app che abbia come target l'API di livello 17 o superiore può utilizzare Filtroscript.

Caratteristiche intrinseche degli script

In Android 4.2, Renderscript aggiunge il supporto per un insieme di funzionalità intrinseche degli script, primitive di filtro accelerate pre-implementate per ridurre la quantità di codice da scrivere e garantire che la tua app ottenga il massimo rendimento possibile in termini di prestazioni.

Intrinsics sono disponibili per combinazioni, sfocatura, matrice dei colori, convolve 3x3 e 5x5, tabella di ricerca per canale e conversione di un buffer Android YUV in RGB.

Gruppi di script

Ora puoi creare gruppi di script Renderscript ed eseguirli tutti con un'unica chiamata, come se facessero parte di un unico script. Questo consente a Renderscript di ottimizzare l'esecuzione degli script in modi che non potrebbe fare se gli script fossero eseguiti singolarmente.

Grafico delle ottimizzazioni di Renderscipt

I benchmark per l'elaborazione delle immagini Renderscript possono essere eseguiti su diverse versioni di piattaforme Android (Android 4.0, 4.1 e 4.2) nella CPU solo su un dispositivo Galaxy Nexus.

I benchmark di elaborazione delle immagini di Renderscript che mettono a confronto le operazioni eseguite con GPU + CPU con quelle eseguite solo con CPU sullo stesso dispositivo Nexus 10.

Se disponi di un grafo diretto aciclico delle operazioni Renderscript da eseguire, puoi utilizzare una classe del builder per creare un gruppo di script che definisce le operazioni. Al momento dell'esecuzione, Renderscript ottimizza l'ordine di esecuzione e le connessioni tra queste operazioni per ottenere le migliori prestazioni.

Miglioramenti costanti dell'ottimizzazione

Quando utilizzi Renderscript per le operazioni di calcolo, le app traggono vantaggio dai miglioramenti continui delle prestazioni e dell'ottimizzazione nel motore Renderscript, senza alcun impatto sul codice dell'app o necessità di ricompilazione.

Man mano che l'ottimizzazione migliora, le tue operazioni vengono eseguite più velocemente e su più chipset, senza alcun intervento da parte tua. Il grafico a destra evidenzia il miglioramento delle prestazioni ottenuto dai continui miglioramenti dell'ottimizzazione di Renderscript nelle versioni successive della piattaforma Android.

Computing GPU

Renderscript Compute è la prima piattaforma di calcolo con portabilità per l'esecuzione diretta sulla GPU di un dispositivo mobile. Ora sfrutta automaticamente le risorse di calcolo GPU quando possibile per migliorare le prestazioni. Con l'integrazione della GPU, anche i calcoli più complessi per l'elaborazione di grafica o immagini possono essere eseguiti con prestazioni notevolmente migliorate.

Qualsiasi app che utilizza Renderscript su un dispositivo supportato può trarre vantaggio immediatamente da questa integrazione della GPU, senza ricompilare. Il tablet Nexus 10 è il primo dispositivo a supportare questa integrazione.

Nuove opzioni integrate per sviluppatori

Il sistema Android 4.2 include una serie di nuove opzioni per sviluppatori che semplificano la creazione di app straordinarie e con un buon rendimento. Le nuove opzioni espongono funzionalità per il debug e la profilazione della tua app da qualsiasi dispositivo o emulatore.

Sui dispositivi con Android 4.2, le opzioni per sviluppatori sono nascoste per impostazione predefinita per migliorare l'esperienza degli utenti. Puoi rivelare le opzioni sviluppatore in qualsiasi momento toccando 7 volte Impostazioni > Informazioni sul telefono > Numero build su qualsiasi dispositivo Android compatibile.

Le nuove opzioni per gli sviluppatori ti offrono altri modi per profilare ed eseguire il debug su un dispositivo.

Le nuove opzioni per gli sviluppatori di Android 4.2 includono:

  • Apri la segnalazione di bug: crea immediatamente uno screenshot, scarica le informazioni sullo stato del dispositivo nello spazio di archiviazione locale dei file, quindi le allega a un nuovo messaggio email in uscita.
  • Segnalazioni di bug del menu di accensione: viene aggiunta una nuova opzione al menu di accensione del dispositivo e alle impostazioni rapide per generare una segnalazione di bug (vedi sopra).
  • Verifica app tramite USB: consente di disattivare i controlli delle app per installare il sideload delle app tramite USB, continuando a controllare le app di altre fonti, ad esempio il browser. Questo può accelerare il processo di sviluppo mantenendo abilitata la funzionalità di sicurezza.
  • Mostra aggiornamenti livelli hardware: lampeggia in verde i livelli hardware quando si aggiornano.
  • Mostra overdraw GPU: mette in evidenza le aree di overdraw della GPU.
  • Forza MSAA 4x: consente di attivare MSAA 4x nelle app Open GL ES 2.0.
  • Simula display secondari: crea una o più finestre overlay non protette sulla schermata corrente da utilizzare come visualizzazione remota simulata. Puoi controllare le dimensioni e la densità del display simulato.
  • Attiva tracce OpenGL: consente di tracciare l'esecuzione OpenGL utilizzando Logcat, Systrace o callback su glGetError.

Nuove tecnologie della piattaforma

Android 4.2 include una serie di tecnologie di piattaforma nuove e avanzate per supportare casi d'uso di comunicazioni innovativi su una vasta gamma di dispositivi hardware. Nella maggior parte dei casi, le nuove tecnologie e i miglioramenti della piattaforma non influiscono direttamente sulle tue app, quindi puoi usufruirne senza alcuna modifica.

Miglioramenti alla sicurezza

Ogni release di Android include decine di miglioramenti della sicurezza per proteggere gli utenti. Ecco alcuni dei miglioramenti apportati ad Android 4.2:

  • Verifica delle applicazioni: prima dell'installazione, gli utenti possono scegliere di attivare la funzionalità "Verifica app" e far filtrare le applicazioni da uno strumento di verifica delle applicazioni. La verifica delle app può avvisare l'utente se tenta di installare un'app che potrebbe essere dannosa; se un'applicazione è particolarmente dannosa, può bloccare l'installazione.
  • Maggiore controllo sugli SMS premium: Android fornisce una notifica se un'applicazione tenta di inviare SMS a un codice breve che utilizza servizi premium, il che potrebbe comportare costi aggiuntivi. L'utente può scegliere se consentire all'applicazione di inviare il messaggio o bloccarlo.
  • VPN sempre attiva: la VPN può essere configurata in modo che le applicazioni non abbiano accesso alla rete fino a quando non viene stabilita una connessione VPN. Questo impedisce alle applicazioni di inviare dati su altre reti.
  • Blocco dei certificati: l'implementazione SSL di libcore supporta ora il blocco dei certificati. I domini bloccati riceveranno un errore di convalida del certificato se il certificato non si concatena a un insieme di certificati previsti. Ciò protegge da possibili compromissioni delle autorità di certificazione.
  • Visualizzazione migliorata delle autorizzazioni Android: le autorizzazioni sono state organizzate in gruppi più facilmente comprensibili agli utenti. Durante la revisione delle autorizzazioni, l'utente può fare clic sull'autorizzazione per visualizzare informazioni più dettagliate sull'autorizzazione.
  • protezione avanzata dell'installazione: il daemon installato non viene eseguito come utente root, riducendo così la potenziale superficie di attacco per l'escalation dei privilegi root.
  • Protezione degli script init: ora gli script init applicano la semantica O_NOFOLLOW per evitare attacchi correlati ai link simbolici.
  • FORTIFY_SOURCE: Android ora implementa FORTIFY_SOURCE. Viene utilizzato da librerie di sistema e applicazioni per prevenire il danneggiamento della memoria.
  • Configurazione predefinita di ContentProvider: per le applicazioni con livello API target 17, l'opzione "export" è impostata su "false" per impostazione predefinita per ogni ContentProvider, riducendo la superficie di attacco predefinita per le applicazioni.
  • Crittografia: sono state modificate le implementazioni predefinite di SecureRandom e Cipher.RSA per utilizzare OpenSSL. Aggiunto il supporto di SSLSocket per TLSv1.1 e TLSv1.2 tramite OpenSSL 1.0.1
  • Correzioni di sicurezza: le librerie open source aggiornate con correzioni di sicurezza includono WebKit, libpng, OpenSSL e LibXML. Android 4.2 include anche correzioni per le vulnerabilità specifiche di Android. Le informazioni su queste vulnerabilità sono state fornite ai membri di Open Handset Alliance e le correzioni sono disponibili in Android Open Source Project. Per migliorare la sicurezza, anche alcuni dispositivi con versioni precedenti di Android potrebbero includere queste correzioni.

Nuovo stack Bluetooth

Android 4.2 introduce un nuovo stack Bluetooth ottimizzato per l'utilizzo con i dispositivi Android. Il nuovo stack Bluetooth sviluppato in collaborazione tra Google e Broadcom sostituisce lo stack basato su BlueZ e offre maggiore compatibilità e affidabilità.

Audio a bassa latenza

Android 4.2 migliora il supporto per la riproduzione audio a bassa latenza, a partire dai miglioramenti apportati nella release 4.1 di Android per la latenza dell'output audio utilizzando le API OpenSL ES, Soundpool e il generatore di suoni. Questi miglioramenti dipendono dal supporto hardware: i dispositivi che offrono queste funzionalità audio a bassa latenza possono pubblicizzarne il supporto per le app tramite una costante delle funzionalità hardware. Vengono fornite nuove API AudioManager per eseguire query sulla frequenza di campionamento audio nativa e sulla dimensione del buffer per l'utilizzo sui dispositivi che rivendicano questa funzionalità.

Nuova interfaccia hardware della videocamera

Android 4.2 introduce una nuova implementazione dello stack di fotocamere. Il sottosistema fotocamera include le implementazioni per i componenti della pipeline della videocamera, come l'acquisizione in modalità burst con controlli di elaborazione.

Nuova interfaccia hardware e interfaccia del controller NFC

Android 4.2 introduce il supporto per i controller basati sullo standard NCI dell'NFC-Forum. NCI fornisce un protocollo di comunicazione standard tra un controller NFC (NFCC) e un host del dispositivo e il nuovo stack NFC sviluppato in collaborazione tra Google e Broadcom lo supporta.

Ottimizzazioni del runtime Dalvik

Il runtime Dalvik include miglioramenti per prestazioni e sicurezza in una gamma più ampia di architetture:

  • Supporto JIT x86 da Intel e supporto JIT MIPS da MIPS
  • Parametri di garbage collection ottimizzati per i dispositivi con dimensioni superiori a 512 MB
  • Le implementazioni predefinite di SecureRandom e Cipher.RSA ora utilizzano OpenSSL
  • Supporto SSLSocket per TLSv1.1 e TLSv1.2 tramite OpenSSL 1.0.1
  • Nuovo supporto intrinseco per i metodi StrictMath addominali, min, max e radice quadrata
  • BouncyCastle aggiornato alla versione 1.47
  • Zlib aggiornato alla versione 1.27
  • dlmalloc aggiornato alla versione 2.8.6

Android 4.1

Benvenuto in Android 4.1, la prima versione di Jelly Bean!

Android 4.1 è la versione di Android più veloce e fluida di sempre. Abbiamo apportato miglioramenti all'intera piattaforma e aggiunto nuove fantastiche funzionalità per utenti e sviluppatori. Questo documento offre una panoramica delle novità per gli sviluppatori.

Consulta il documento sulle API per Android 4.1 per informazioni dettagliate sulle nuove API per sviluppatori.

Scopri di più sulle funzionalità di Jelly Bean per gli utenti sul sito www.android.com.

Più veloce, fluido e reattivo

Android 4.1 è ottimizzato per offrire le migliori prestazioni di Android e la minima latenza al tocco in un'interfaccia utente intuitiva e senza sforzo.

Per garantire una frequenza fotogrammi coerente, Android 4.1 estende il tempo vsync in tutti i disegni e le animazioni realizzati dal framework Android. Tutto funziona in un passo di pari passo rispetto all'heartbeat vsync di 16 millisecondi, come rendering dell'applicazione, eventi touch, composizione dello schermo e aggiornamento del display, in modo che i frame non vadano avanti o indietro.

Android 4.1 aggiunge inoltre un triplo buffering nella pipeline grafica, per un rendering più coerente che rende tutto più fluido, dallo scorrimento al paging, al paging e alle animazioni.

Android 4.1 riduce la latenza touch non solo sincronizzando il tocco con la sincronizzazione vsync, ma anche prevedendo effettivamente dove si troverà il dito al momento dell'aggiornamento dello schermo. Il risultato è una risposta al tocco più reattiva e uniforme. Inoltre, dopo i periodi di inattività, Android applica un incremento di input della CPU al successivo evento di tocco, per garantire l'assenza di latenza.

Gli strumenti possono aiutarti a ottenere il miglior rendimento in assoluto dalle tue app. Android 4.1 è progettato per funzionare con un nuovo strumento chiamato systrace, che raccoglie i dati direttamente dal kernel Linux per produrre un quadro generale delle attività di sistema. I dati sono rappresentati come un gruppo di grafici di serie temporali impilati verticalmente per contribuire a isolare le interruzioni del rendering e altri problemi. Lo strumento è ora disponibile nell'SDK Android (Strumenti R20 o versioni successive)

Accessibilità migliorata

Le nuove API per i servizi di accessibilità ti consentono di gestire i gesti e l'obiettivo di accessibilità mentre l'utente si sposta tra gli elementi sullo schermo e i pulsanti di navigazione utilizzando gesti di accessibilità, accessori e altri input. Il sistema TalkBack e l'esplorazione al tocco sono stati riprogettati in modo da utilizzare l'accessibilità per un uso più semplice e offrono un set completo di API per gli sviluppatori.

I servizi di accessibilità possono collegare i propri tutorial nelle impostazioni di accessibilità per aiutare gli utenti a configurare e utilizzare i propri servizi.

Le app che utilizzano componenti standard di tipo View ereditano automaticamente il supporto delle nuove funzioni di accessibilità, senza alcuna modifica al codice. Le app che usano le viste personalizzate possono usare le nuove API dei nodi di accessibilità per indicare le parti della vista che interessano i servizi di accessibilità.

Assistenza per utenti internazionali

Supporto di testo bidirezionale e altre lingue

Android 4.1 consente di raggiungere un maggior numero di utenti grazie al supporto del testo bidirezionale negli elementi TextView ed EditText. Le app possono visualizzare o gestire la modifica del testo in script da sinistra a destra o da destra a sinistra. Le app possono utilizzare le nuove lingue arabe ed ebraiche e i caratteri associati.

Altri tipi di supporto di nuove lingue includono:

  • Altre lingue indiane: kannada, telugu e malayalam
  • I nuovi caratteri Emoji della versione Unicode 6.0
  • Migliore supporto dei glifi per gli utenti giapponesi (vengono visualizzate le versioni dei glifi specifiche per il giapponese quando la lingua di sistema è impostata sul giapponese)
  • Glifi arabi ottimizzati per WebView oltre ai glifi arabi per TextView
  • Supporto del testo verticale nei WebView, tra cui Testo Ruby e glifi Testo verticale aggiuntivi
  • Il grassetto sintetico è ora disponibile per tutti i caratteri che non hanno glifi in grassetto dedicati

Mappe dei tasti installabili dall'utente

La piattaforma ora supporta mappe di tastiere installabili dall'utente, ad esempio per altre tastiere internazionali e tipi di layout speciali. Per impostazione predefinita, Android 4.1 include 27 mappe dei tasti internazionali, tra cui Dvorak. Quando gli utenti collegano una tastiera, possono accedere all'app Impostazioni e selezionare una o più mappe dei tasti da utilizzare per quella tastiera. Durante la digitazione, gli utenti possono passare da una mappa dei tasti all'altra utilizzando una scorciatoia (Ctrl-spazio).

Puoi creare un'app per pubblicare ulteriori mappe delle chiavi nel sistema. L'APK includerà le risorse di layout della tastiera al suo interno, in base al formato standard della mappa dei tasti Android. L'applicazione può offrire layout di tastiera aggiuntivi all'utente dichiarando nel file manifest un ricevitore di trasmissione adatto per ACTION_QUERY_KEYBOARD_LAYOUTS.

Nuovi modi per creare una UI accattivante

Gli sviluppatori possono creare stili di notifica personalizzati, come quelli mostrati negli esempi precedenti, per mostrare azioni e contenuti avanzati.

Notifiche espandibili

Le notifiche sono da tempo una funzionalità unica e popolare su Android. Gli sviluppatori possono usarle per mostrare agli utenti informazioni importanti o basate sull'orario nella barra delle notifiche, al di fuori della normale UI dell'app.

Android 4.1 introduce un importante aggiornamento al framework di notifica di Android. Ora le app possono mostrare agli utenti notifiche più grandi e avanzate che possono essere espanse e compresse con un pizzico o un dito. Le notifiche supportano nuovi tipi di contenuti, incluse le foto, hanno priorità configurabile e possono anche includere più azioni.

Tramite un generatore di notifiche migliorato, le app possono creare notifiche che utilizzano un'area più ampia, fino a 256 dp. Sono disponibili tre stili di notifica basati su modelli:

  • BigTextStyle: una notifica che include un oggetto TextView su più righe.
  • BigPosta in arrivoStyle: una notifica che mostra qualsiasi tipo di elenco come messaggi, titoli e così via.
  • BigPictureStyle: una notifica che mostra contenuti visivi come una bitmap.

Oltre agli stili basati su modelli, puoi creare i tuoi stili di notifica utilizzando qualsiasi vista remota.

Le app possono aggiungere a una notifica fino a tre azioni, che vengono visualizzate sotto i contenuti della notifica. Le azioni consentono agli utenti di rispondere direttamente alle informazioni nella notifica in modi alternativi, ad esempio via email o per telefono, senza accedere all'app.

Con le notifiche espandibili, le app possono dare più informazioni all'utente, in modo semplice e on demand. Gli utenti mantengono il controllo e possono premere a lungo qualsiasi notifica per ricevere informazioni sul mittente e, facoltativamente, disattivare ulteriori notifiche dall'app.

I widget per le app possono ridimensionarsi automaticamente per adattarsi alla schermata Home e caricare contenuti diversi quando cambiano le loro dimensioni.

Widget di app ridimensionabili

Android 4.1 introduce widget app migliorati che possono essere ridimensionati automaticamente in base al punto in cui l'utente li rilascia nella schermata Home, alle dimensioni in cui vengono espansi e alla quantità di spazio disponibile nella schermata Home. Le nuove API App Widget ti consentono di ottimizzare i contenuti dei widget delle app quando cambiano le dimensioni dei widget.

Quando un widget cambia dimensione, il sistema invia una notifica al fornitore del widget dell'app host, che può ricaricare i contenuti nel widget in base alle esigenze. Ad esempio, un widget potrebbe mostrare una grafica più grande e più ricca oppure funzionalità o opzioni aggiuntive. Gli sviluppatori possono comunque mantenere il controllo sulle dimensioni massime e minime e possono aggiornare altre opzioni del widget quando necessario.

Puoi anche fornire layout separati orizzontali e verticali per i widget, che il sistema gonfia in base alle esigenze quando l'orientamento dello schermo cambia.

I widget delle app possono ora essere visualizzati in Avvio app di terze parti e in altre app host tramite un nuovo intent di associazione (AppWidgetManager.ACTION_APPWIDGET_BIND).

Navigazione delle attività semplificata

Android 4.1 semplifica la gestione della navigazione "Su" disponibile per gli utenti dall'interno delle tue app e contribuisce a garantire un'esperienza coerente agli utenti.

Puoi definire la navigazione verso l'alto prevista per i singoli componenti Attività della tua UI aggiungendo un nuovo attributo XML nel file manifest dell'app. In fase di esecuzione, all'avvio delle attività, il sistema estrae la struttura di navigazione "Up" dal file manifest e crea automaticamente la barra di navigazione verso l'alto nella barra delle azioni. Gli sviluppatori che dichiarano la navigazione Up nel manifest non devono più gestire la navigazione tramite callback in fase di esecuzione, ma possono anche farlo se necessario.

È disponibile anche una nuova classe TaskStackBuilder che consente di creare rapidamente uno stack di attività sintetico da avviare immediatamente o da utilizzare quando un'attività viene avviata da un PendingIntent. La creazione di uno stack di attività sintetico è particolarmente utile quando gli utenti avviano le attività da visualizzazioni remote, ad esempio dai widget e dalle notifiche della schermata Home, perché consente allo sviluppatore di fornire un'esperienza gestita e coerente nella navigazione indietro.

Animazioni semplici per l'avvio dell'attività

Puoi utilizzare una nuova classe helper, ActivityOptions, per creare e controllare l'animazione visualizzata quando avvii le attività. Tramite la classe helper, puoi specificare risorse di animazione personalizzate da utilizzare quando viene avviata l'attività o richiedere nuove animazioni di zoom che iniziano da qualsiasi rettangolo specificato sullo schermo e che facoltativamente includano una bitmap in miniatura.

Transizioni alle modalità Luce spenta e a schermo intero

I nuovi flag dell'interfaccia utente di sistema in View ti consentono di passare facilmente da una normale interfaccia utente dell'applicazione (con barra delle azioni, barra di navigazione e barra di sistema visibili), alla "modalità Luce spenta" (con barra di stato e barra delle azioni nascoste e barra di navigazione attenuata) o "modalità a schermo intero" (con barra di stato, barra delle azioni e barra di navigazione nascoste).

Nuovi tipi di visualizzazioni da remoto

Ora gli sviluppatori possono utilizzare le visualizzazioni GridLayout e ViewStub nei widget e nelle notifiche della schermata Home. GridLayout ti consente di strutturare i contenuti delle tue visualizzazioni remote e gestire gli allineamenti delle visualizzazioni secondarie con una gerarchia di interfaccia utente meno profonda. ViewStub è una visualizzazione invisibile di dimensioni zero che può essere utilizzata per incrementare pigramente le risorse di layout in fase di runtime.

Anteprima sfondo animato

Android 4.1 consente agli utenti di trovare e installare più facilmente gli sfondi animati dalle app che li includono. Se la tua app include gli sfondi animati, ora puoi avviare un'attività (ACTION_CHANGE_LIVE_WALLPAPER) che mostri all'utente un'anteprima dello sfondo animato dalla tua app. Dall'anteprima, gli utenti possono caricare direttamente lo sfondo animato.

Foto dei contatti a risoluzione maggiore

Con Android 4.1 puoi memorizzare foto dei contatti di dimensioni pari a 720 x 720, per rendere i contatti ancora più completi e personali. Le app possono archiviare e recuperare le foto dei contatti di quelle dimensioni o di utilizzare qualsiasi altra dimensione necessaria. Le dimensioni massime delle foto supportate su dispositivi specifici possono variare, pertanto le app devono eseguire una query al fornitore di contatti integrato in fase di esecuzione per ottenere la dimensione massima per il dispositivo corrente.

Nuovi tipi e funzionalità di input

Informazioni sui dispositivi aggiunti e rimossi

Le app possono registrarsi per ricevere una notifica quando vengono collegati nuovi dispositivi di input tramite USB, Bluetooth o qualsiasi altro tipo di connessione. Possono utilizzare queste informazioni per modificare lo stato o le funzionalità in base alle esigenze. Ad esempio, un gioco potrebbe ricevere una notifica che comunica che è collegato una nuova tastiera o un nuovo joystick, a indicare la presenza di un nuovo giocatore.

Eseguire query sulle funzionalità dei dispositivi di input

Android 4.1 include API che consentono ad app e giochi di sfruttare appieno tutti i dispositivi di input connessi e disponibili.

Le app possono interrogare il gestore dispositivi per enumerare tutti i dispositivi di input attualmente collegati e ottenere informazioni sulle funzionalità di ciascuno.

Controlla vibrazione sui dispositivi di input

Tra le altre funzionalità, le app ora possono utilizzare qualsiasi servizio vibrazione associato a un dispositivo di input collegato, ad esempio per i controller Rumble Pak.

Animazione e grafica

Vsync per le app

L'estensione di vsync nel framework Android porta a una frequenza fotogrammi più coerente e a un'interfaccia utente stabile e uniforme. Per agevolare anche le app, Android 4.1 estende il tempo di vsync a tutti i disegni e le animazioni avviati dalle app. In questo modo possono ottimizzare le operazioni sul thread dell'interfaccia utente e fornire una base dei tempi stabile per la sincronizzazione.

Le app possono sfruttare senza costi il tempo di vsync attraverso il framework di animazione Android. Il framework dell'animazione ora utilizza il tempo vsync per gestire automaticamente la sincronizzazione tra animatori.

Per usi specializzati, le app possono accedere al temporizzazione vsync tramite le API esposte da una nuova classe Choreographer. Le app possono richiedere l'annullamento della convalida al successivo frame vsync, un buon modo per pianificare l'animazione quando le app non utilizzano il framework di animazione. Per utilizzi più avanzati, le app possono pubblicare un callback in modo che la classe Choreographer venga eseguita sul frame successivo.

Nuove azioni di animazione e tipi di transizione

Il framework dell'animazione ora consente di definire le azioni di inizio e fine da intraprendere quando si eseguono le animazioni ViewPropertyAnimator, per facilitare la sincronizzazione con altre animazioni o azioni nell'applicazione. L'azione può eseguire qualsiasi oggetto eseguibile. Ad esempio, l'elemento eseguibile potrebbe specificare un'altra animazione da avviare al termine di quella precedente.

Ora puoi anche specificare che un ViewPropertyAnimator utilizzi un livello nel corso dell'animazione. In precedenza, una best practice consisteva nell'animare visualizzazioni complesse impostando un livello prima di avviare un'animazione e quindi gestendo un evento onAnimationEnd() per rimuovere il livello al termine dell'animazione. Ora, il metodo withlayer() su ViewPropertyAnimator semplifica questo processo con una singola chiamata al metodo.

Un nuovo tipo di transizione in LayoutTransizione consente di automatizzare le animazioni in risposta a tutte le modifiche al layout di un ViewGroup.

Nuovi tipi di connettività

Android Beam

Android Beam è una nota tecnologia basata su NFC che consente agli utenti di condividere all'istante semplicemente toccando due telefoni con supporto NFC.

In Android 4.1, Android Beam semplifica la condivisione di immagini, video o altri payload sfruttando il Bluetooth per il trasferimento di dati. Quando l'utente attiva un trasferimento, Android Beam passa dalla tecnologia NFC al Bluetooth, semplificando la gestione del trasferimento di un file da un dispositivo all'altro.

Rilevamento dei servizi di rete Wi-Fi

Android 4.1 introduce il supporto per il rilevamento di servizi basato su DNS multicast, che consente alle applicazioni di trovare e connettersi ai servizi offerti da dispositivi peer su reti Wi-Fi, inclusi dispositivi mobili, stampanti, fotocamere, lettori multimediali e altri ancora. Gli sviluppatori possono sfruttare il rilevamento dei servizi di rete Wi-Fi per creare esperienze di applicazioni e giochi multipiattaforma o multiplayer.

Utilizzando l'API Service Discovery, le app possono creare e registrare qualsiasi tipo di servizio per il rilevamento di qualsiasi altro dispositivo abilitato per NSD. Il servizio viene pubblicizzato tramite multicast sulla rete utilizzando un identificatore di stringa leggibile, che consente all'utente di identificare più facilmente il tipo di servizio.

I dispositivi dei consumatori possono utilizzare l'API per cercare e rilevare i servizi disponibili da dispositivi connessi alla rete Wi-Fi locale. Dopo il rilevamento, le app possono usare l'API per risolvere il servizio su un indirizzo IP e una porta tramite le quali stabilire una connessione socket.

Puoi sfruttare questa API per creare nuove funzionalità nelle tue app. Ad esempio, puoi consentire agli utenti di connettersi a una webcam, una stampante o a un'app su un altro dispositivo mobile che supporta le connessioni peer-to-peer Wi-Fi.

rilevamento del servizio Wi-Fi P2P

Ice Cream Sandwich ha introdotto il supporto per Wi-Fi Peer-to-Peer (P2P), una tecnologia che consente alle app di rilevare e accoppiare direttamente, tramite una connessione peer-to-peer a larghezza di banda elevata (in conformità con il programma di certificazione Wi-Fi DirectTM di Wi-Fi Alleiance). Il Wi-Fi P2P è il modo ideale per condividere contenuti multimediali, foto, file e altri tipi di dati e sessioni, anche dove non sono disponibili reti cellulari o Wi-Fi.

Android 4.1 porta più avanti il Wi-Fi P2P, aggiungendo il supporto API per il rilevamento dei servizi pre-associato. Il rilevamento di servizi preassociato consente alle tue app di ricevere informazioni più utili dai dispositivi nelle vicinanze in merito ai servizi supportati prima che tentino di connettersi. Le app possono avviare il rilevamento per un servizio specifico e filtrare l'elenco dei dispositivi rilevati in base a quelli che supportano effettivamente l'applicazione o il servizio di destinazione.

Ad esempio, questo significa che la tua app potrebbe rilevare solo i dispositivi che sono "stampanti" o che hanno un gioco specifico disponibile, anziché trovare tutti i dispositivi P2P Wi-Fi nelle vicinanze. D'altra parte, la tua app può pubblicizzare il servizio fornito ad altri dispositivi, che possono rilevarlo e quindi negoziare una connessione. Ciò semplifica notevolmente il rilevamento e l'accoppiamento per gli utenti e consente alle app di sfruttare il Wi-Fi P2P in modo più efficace.

Grazie al rilevamento dei servizi Wi-Fi P2P, puoi creare app e giochi multiplayer in grado di condividere foto, video, gameplay, punteggi e qualsiasi altra cosa, il tutto senza bisogno di internet o di una rete mobile. Gli utenti possono connettersi utilizzando solo una connessione p2p diretta, che evita di utilizzare la larghezza di banda mobile.

Gestione della larghezza di banda della rete

Android 4.1 consente alle app di gestire l'utilizzo dei dati in modo appropriato quando il dispositivo è collegato a una rete a consumo, incluso il tethering con un hotspot mobile. Le app possono chiedere se la rete attuale è a consumo prima di iniziare un download di grandi dimensioni che altrimenti potrebbe essere relativamente costoso per l'utente. Tramite l'API, ora puoi ottenere un quadro chiaro delle reti sensibili all'utilizzo dei dati e gestire l'attività di rete di conseguenza.

Nuove funzionalità multimediali

Accesso ai codec multimediali

Android 4.1 fornisce un accesso di basso livello ai codec hardware e software della piattaforma. Le app possono interrogare il sistema per scoprire quali codec multimediali di basso livello sono disponibili sul dispositivo e quindi utilizzarli nei modi che vogliono. Ad esempio, ora puoi creare più istanze di un codec multimediale, inserire in coda i buffer di input e ricevere in cambio buffer di output. Inoltre, il framework del codec multimediale supporta i contenuti protetti. Le app possono richiedere un codec disponibile in grado di riprodurre contenuti protetti con una soluzione DRM disponibile sul dispositivo.

Audio USB

Il supporto dell'output audio USB consente ai fornitori di hardware di creare hardware come dock audio che si interfacciano con i dispositivi Android. Questa funzionalità è esposta anche con l'Open Accessory Development Kit (ADK) per Android, che offre a tutti gli sviluppatori la possibilità di creare il proprio hardware.

Attivazione della registrazione audio

Android ora consente di attivare la registrazione audio in base al completamento di una traccia di riproduzione audio. Questo è utile in situazioni come la riproduzione di un tono per indurre gli utenti a iniziare a parlare per registrare la propria voce. Questa funzionalità ti consente di sincronizzare la registrazione in modo da non registrare l'audio attualmente in riproduzione e di evitare che le registrazioni inizino troppo tardi.

Audio multicanale

Android 4.1 supporta l'audio multicanale sui dispositivi che dispongono dell'audio multicanale hardware tramite la porta HDMI. L'audio multicanale consente di offrire agli utenti esperienze rich media per applicazioni quali giochi, app di musica e video player. Per i dispositivi che non hanno l'hardware supportato, Android esegue automaticamente il downgrade dell'audio al numero di canali supportati dal dispositivo (di solito in stereo).

Android 4.1 aggiunge anche il supporto integrato per la codifica/decodifica dell'audio AAC 5.1.

Pre-elaborazione audio

Gli sviluppatori possono applicare effetti di pre-elaborazione all'audio registrato, ad esempio l'eliminazione del rumore per migliorare la qualità della registrazione vocale, la cancellazione dell'eco per l'eco acustica e il controllo automatico del guadagno per l'audio con livelli di volume non coerenti. Le app che richiedono registrazioni audio nitide e di alta qualità trarranno vantaggio da questi preprocessori.

Concatenamento audio

MediaPlayer supporta il concatenamento di stream audio per riprodurre file audio senza pause. Questa funzionalità è utile per le app che richiedono transizioni fluide tra i file audio, ad esempio lettori musicali per riprodurre album con tracce o giochi continui.

Router multimediale

Le nuove API MediaRouter, MediaRouteActionProvider e MediaRouteButton forniscono meccanismi e UI standard per scegliere dove riprodurre i contenuti multimediali. Il supporto è integrato per auricolari con cavo, cuffie e altoparlanti Bluetooth a2dp e puoi aggiungere le tue opzioni di routing all'interno della tua app.

Calcolo Renderscript

Android 4.1 estende il calcolo di Renderscript per offrirti maggiore flessibilità. Ora puoi campionare le texture negli script di calcolo Renderscript e sono disponibili nuovi pragma per definire la precisione in virgola mobile richiesta dai tuoi script. Ciò consente di attivare istruzioni NEON come operazioni matematiche veloci vettoriali sul percorso della CPU, che non sarebbero altrimenti possibili con l'intero standard IEEE 754-2008.

Ora puoi eseguire il debug degli script di computing Renderscript su dispositivi hardware e emulatori basati su x86. Puoi anche definire più kernel di stile root in un unico file di origine Renderscript.

Browser Android e WebView

In Android 4.1, il browser Android e i componenti WebView includono i seguenti miglioramenti:

  • Migliore esperienza utente con i video HTML5, con funzionalità touch-to-play/pausa e transizione fluida dalla modalità in linea a quella a schermo intero.
  • È stata migliorata la velocità di rendering e si riduce l'utilizzo della memoria per migliorare le prestazioni di scorrimento e zoom.
  • Sono state migliorate le prestazioni dell'animazione HTML5/CSS3/Canvas.
  • Miglioramento dell'inserimento di testo.
  • Motore JavaScript (V8) aggiornato per prestazioni JavaScript migliori.
  • Supporto della specifica HTML5 Media Capture aggiornata (l'attributo "capture" sugli elementi di input type=file).

API e servizi Google

Per estendere ulteriormente le funzionalità di Android, sono disponibili diversi nuovi servizi per Android.

Messaggistica cloud di Google per Android

Google Cloud Messaging (GCM) è un servizio che consente agli sviluppatori di inviare dati di brevi messaggi ai propri utenti su dispositivi Android, senza bisogno di una soluzione di sincronizzazione proprietaria.

GCM gestisce tutti i dettagli relativi all'aggiunta in coda dei messaggi e al loro recapito in modo efficiente ai dispositivi Android di destinazione. Supporta il multicasting di messaggi e può raggiungere contemporaneamente fino a 1000 dispositivi connessi con una singola richiesta. Supporta anche i payload di messaggi, il che significa che oltre a inviare messaggi di sollecito a un'app sul dispositivo, gli sviluppatori possono inviare fino a 4K di dati.

Google Cloud Messaging è completamente senza costi per tutti gli sviluppatori e registrarsi è facile. Consulta la pagina Google Cloud Messaging per la registrazione, i download e la documentazione.

Crittografia delle app

A partire da Android 4.1, Google Play contribuirà a proteggere gli asset delle applicazioni criptando tutte le app a pagamento con una chiave specifica per dispositivo prima che vengano pubblicate e archiviate su un dispositivo.

Aggiornamenti delle app intelligenti

Aggiornamenti delle app intelligenti è una nuova funzionalità di Google Play che introduce un modo migliore per caricare gli aggiornamenti delle app per i dispositivi. Quando gli sviluppatori pubblicano un aggiornamento, Google Play ora pubblica sui dispositivi solo i bit che sono stati modificati, anziché l'intero APK. In questo modo gli aggiornamenti sono molto più leggeri nella maggior parte dei casi, in modo da velocizzare il download, risparmiare la batteria del dispositivo e limitare l'utilizzo della larghezza di banda sul piano dati mobili degli utenti. In media, le dimensioni di un aggiornamento smart app sono 1/3 delle dimensioni di un aggiornamento completo dell'APK.

Google Play Services

Google Play Services aiuta gli sviluppatori a integrare i servizi Google, ad esempio l'autenticazione, nelle loro app pubblicate tramite Google Play.

Google Play Services esegue automaticamente il provisioning dei dispositivi degli utenti finali da Google Play, quindi tutto ciò di cui hai bisogno è una libreria thin client nelle tue app.

Poiché la tua app contiene solo la piccola libreria client, puoi sfruttare questi servizi senza un notevole aumento delle dimensioni di download e dello spazio di archiviazione. Inoltre, Google Play fornirà aggiornamenti regolari ai servizi, senza che gli sviluppatori debbano pubblicare aggiornamenti dell'app per utilizzarli.

Per ulteriori informazioni sulle API incluse in Google Play Services, consulta la pagina per sviluppatori di Google Play Services.