Jelly Bean

Android 4.3

Android 4.3 su smartphone 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 funzionalità per utenti e sviluppatori. Questo documento fornisce un'anteprima delle novità per gli sviluppatori.

Consulta il documento 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 all'indirizzo www.android.com.

Più veloce, più fluida e più adattabile

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

Per un aumento delle prestazioni grafiche, il renderer 2D con accelerazione hardware ora ottimizza lo stream dei comandi di disegno, trasformandolo in un formato GPU più efficiente riordinando e unendo le operazioni di disegno. Per l'elaborazione multithread, ora il renderer può anche utilizzare il multithreading su più core della CPU per eseguire determinate attività.

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

L'allocazione migliorata del buffer della finestra consente di allocare più rapidamente il buffer delle immagini per le app, riducendo il tempo necessario per avviare il rendering quando crei una finestra.

Per una grafica con le prestazioni più elevate, Android 4.3 introduce il supporto per OpenGL ES 3.0 e lo rende accessibile alle app tramite API framework e 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 dei gradienti.

OpenGL ES 3.0 per grafica ad alte prestazioni

Android 4.3 introduce il supporto della piattaforma per Khronos OpenGL ES 3.0, fornendo a giochi e altre app funzionalità di grafica 2D e 3D con le massime prestazioni su dispositivi supportati. Puoi sfruttare OpenGL ES 3.0 e le estensioni EGL correlate utilizzando le API del framework o le associazioni di API native tramite il Kit di sviluppo nativo 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 shading GLSL ES con supporto per numeri interi e a virgola mobile a 32 bit, il rendering delle texture avanzato e i formati delle dimensioni delle texture e dei buffer di rendering standardizzati.

Puoi utilizzare le API OpenGL ES 3.0 per creare grafica altamente complessa ed efficiente che viene eseguita su una serie di dispositivi Android compatibili e supportare un unico formato di compressione delle texture standard su questi dispositivi.

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

Connettività Bluetooth avanzata

Connettività con dispositivi e sensori Bluetooth Smart

Ora puoi progettare e creare app che interagiscono con la generazione più recente di dispositivi e sensori piccoli e 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 della piattaforma integrato per Bluetooth Smart Ready nel ruolo centrale e fornisce un insieme standard di API che le app possono utilizzare per rilevare i dispositivi nelle vicinanze, eseguire query sui servizi GATT e leggere/scrivere le caratteristiche.

Con le nuove API, le tue app possono cercare in modo efficiente dispositivi e servizi di interesse. Per ogni dispositivo, puoi verificare la presenza di servizi GATT supportati in base all'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 le caratteristiche oppure registrare un listener 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 le caratteristiche personalizzate, se necessario. L'app può funzionare come client o server e può trasmettere e ricevere dati in entrambe le modalità. Le API sono generiche, quindi potrai supportare le interazioni con una serie di dispositivi, come tag di prossimità, orologi, misuratori di attività fisica, controller per giochi, telecomandi, dispositivi per la salute e altro ancora.

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

Profilo AVRCP 1.3

Android 4.3 aggiunge il supporto integrato per Bluetooth AVRCP 1.3, in modo che le tue app possano supportare interazioni più complete con i dispositivi media per lo streaming remoto. App come i media player possono sfruttare AVRCP 1.3 tramite le API client di telecomando introdotte in Android 4.0. Oltre a esporre i controlli di riproduzione sui dispositivi remoti connessi tramite Bluetooth, ora le app possono trasmettere metadati come il nome della traccia, il 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 è subito disponibile sui dispositivi Nexus e su altri dispositivi compatibili con Android che offrono la funzionalità A2DP/AVRCP.

Supporto per i profili con limitazioni

Configurare un profilo con limitazioni

Il proprietario di un tablet può configurare uno o più profili limitati in Impostazioni e gestirli in modo indipendente.

Impostare le limitazioni in un profilo

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

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

Ogni profilo con limitazioni offre uno spazio isolato e sicuro con 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 controlla quali app installate sono attivate nel nuovo profilo e l'accesso ai suoi account è disattivato per impostazione predefinita.

Le app che devono accedere agli account del proprietario, per l'accesso, per le preferenze o per altri utilizzi, possono attivare questa funzionalità 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 ai tuoi utenti. Puoi implementare le limitazioni delle app, ovvero i controlli dei contenuti o delle funzionalità supportati dalla tua app, e pubblicizzarli per i proprietari di tablet nelle impostazioni di configurazione del profilo.

Puoi aggiungere limitazioni per le app direttamente alle impostazioni di configurazione del profilo utilizzando tipi booleani, di selezione e di selezione multipla predefiniti. Se vuoi maggiore flessibilità, puoi anche avviare la tua UI dalle impostazioni di configurazione del profilo per offrire qualsiasi tipo di limitazione.

Quando l'app viene eseguita in un profilo, può verificare eventuali limitazioni configurate dal proprietario e applicarle di conseguenza. Ad esempio, un'app multimediale potrebbe offrire una limitazione per consentire al proprietario di impostare un livello di maturità per il profilo. Durante l'esecuzione, l'app potrebbe controllare l'impostazione di maturità e gestire i contenuti in base al livello di maturità preferito.

Se la tua app non è progettata per l'utilizzo in profili con limitazioni, puoi disattivarla del tutto in modo che non possa essere attivata in nessun profilo con limitazioni.

Funzionalità ottimizzate per la posizione e i sensori

Google Play Services offre API di geolocalizzazione 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 hardware ottimizza l'efficienza energetica eseguendo il calcolo della posizione nell'hardware del dispositivo anziché nel software. Sui dispositivi che supportano il geofencing hardware, le API di geofencing di Google Play Services potranno sfruttare questa ottimizzazione per risparmiare batteria quando il dispositivo è in movimento.

La modalità solo ricerca 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 e risparmiare batteria. Le app che dipendono dal Wi-Fi per i servizi di geolocalizzazione ora possono chiedere agli utenti di attivare la modalità solo ricerca dalle impostazioni avanzate del Wi-Fi. La modalità di sola ricerca Wi-Fi non dipende dall'hardware del dispositivo ed è disponibile nella piattaforma Android 4.3.

I nuovi tipi di sensori consentono alle app di gestire meglio le letture dei sensori. Un vettore di rotazione del gioco consente agli sviluppatori di giochi di rilevare la rotazione del dispositivo senza doversi preoccupare di interferenze magnetiche. I sensori giroscopio e magnetometro non calibrati registrano 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.

Funzionalità per i nuovi media

Framework DRM modulare

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

Attraverso una combinazione di nuove API e miglioramenti alle API esistenti, il framework DRM per i contenuti multimediali fornisce un insieme integrato di servizi per la gestione delle licenze e del provisioning, l'accesso ai codec a 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 per i contenuti gestiscono la comunicazione di rete con un server delle licenze e gestiscono lo streaming di dati criptati da una raccolta di contenuti.

Codificatore VP8

Android 4.3 introduce il supporto integrato per la codifica VP8, accessibile dalle API native e del framework. Per le app che utilizzano API native, la piattaforma include le intestazioni di estensioni OpenMAX 1.1.2 per supportare i profili e i livelli VP8. Il supporto della codifica VP8 include impostazioni per la velocità in bit target, il controllo della velocità, la frequenza frame, la partizione dei token, la resilienza agli errori, la ricostruzione e i filtri di loop. L'API della piattaforma introduce il supporto dell'encoder VP8 in una serie di formati, in modo da poter sfruttare il formato migliore per i tuoi contenuti.

La codifica VP8 è disponibile in 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 idonei.

Codifica video da una superficie

A partire da Android 4.3, puoi utilizzare una superficie come input per un codificatore video. Ad esempio, ora puoi indirizzare uno stream da una superficie OpenGL ES al codificatore, anziché dover copiare tra i buffer.

Muxer di contenuti multimediali

Le app possono utilizzare le nuove API di muxer multimediale per combinare stream audio e video di base in un unico file di output. Al momento, le app possono eseguire il multiplexing 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 una controparte delle API di demuxing dei contenuti multimediali introdotte in Android 4.2.

Avanzamento della riproduzione e scrubbing nei client di controllo remoto

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 ora possono anche mostrare il progresso e la velocità della riproduzione tramite i client di controllo remoto e ricevere comandi per saltare a una posizione di riproduzione specifica.

Nuovi modi per creare app bellissime

Accesso alle notifiche

Le notifiche sono da tempo una funzionalità popolare di Android perché consentono agli utenti di visualizzare informazioni e aggiornamenti di tutto il sistema in un unico posto. Ora in Android 4.3, le app possono osservare lo stream di notifiche con l'autorizzazione dell'utente e visualizzarle nel modo che preferiscono, inclusa la loro invio a dispositivi nelle vicinanze connessi tramite Bluetooth.

Puoi accedere alle notifiche tramite nuove API che ti consentono di registrare un servizio di ascolto delle notifiche e, con l'autorizzazione dell'utente, di ricevere le notifiche quando vengono visualizzate nella barra di stato. Le notifiche vengono comunicate per intero, con tutti i dettagli sull'app di origine, sull'ora del post, sulla visualizzazione e sullo stile dei contenuti e sulla priorità. Puoi valutare i campi di interesse nelle notifiche, elaborare o aggiungere contesto dalla tua app e inoltrarli per la visualizzazione nel modo che preferisci.

La nuova API ti fornisce i callback quando una notifica viene aggiunta, aggiornata e rimossa (perché l'utente l'ha ignorata o perché l'app di origine l'ha ritirata). Potrai avviare tutti gli intent associati alla notifica o alle sue azioni, nonché ignorarla dal sistema, consentendo alla tua app di fornire un'interfaccia utente completa alle notifiche.

Gli utenti mantengono il controllo sulle app che possono ricevere notifiche. In qualsiasi momento, può controllare in Impostazioni quali app hanno accesso alle notifiche e attivare o disattivare l'accesso in base alle proprie esigenze. L'accesso alle notifiche è disattivato per impostazione predefinita: le app possono utilizzare un nuovo Intent per indirizzare l'utente direttamente alle Impostazioni per attivare il servizio di ascolto dopo l'installazione.

Visualizzare gli overlay

Ora puoi creare sovrapposizioni trasparenti sopra le visualizzazioni e i gruppi di visualizzazioni per visualizzare una gerarchia temporanea delle visualizzazioni o effetti di animazione temporanei senza disturbare la gerarchia del layout sottostante. Gli overlay sono particolarmente utili quando vuoi creare animazioni, ad esempio far scorrere una visualizzazione al di fuori del relativo contenitore o trascinare elementi sullo schermo senza influire sulla gerarchia della visualizzazione.

Modalità di layout dei limiti ottici

Una nuova modalità di layout ti consente di gestire il posizionamento delle visualizzazioni all'interno di ViewGroups in base ai relativi limiti ottici anziché ai limiti di clip. I limiti del clip rappresentano il confine esterno effettivo di un widget, mentre i nuovi limiti ottici descrivono la posizione apparente del widget all'interno dei limiti del clip. Puoi utilizzare la modalità di layout dei limiti ottici per allineare correttamente i widget che utilizzano effetti visivi esterni come ombre e bagli.

Tipi di animazione di rotazione personalizzata

Ora le app possono definire i tipi di animazione di uscita e di entrata utilizzati in una finestra quando il dispositivo viene ruotato. Puoi impostare le proprietà della finestra per attivare il taglio netto, la transizione o la rotazione della finestra standard. Il sistema utilizza i tipi di animazione personalizzata 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 assicurarsi che vengano visualizzate con l'orientamento corretto quando il dispositivo viene capovolto. Inoltre, le app possono utilizzare una nuova modalità per bloccare lo schermo con l'orientamento corrente. Questa opzione è utile per le app che utilizzano la fotocamera e vogliono disattivare la rotazione durante la registrazione di video.

Intent per la 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. La tua app può ascoltare l'intent e inviare il messaggio al chiamante tramite il tuo sistema di messaggistica. L'intent include il destinatario (chiamatore) e il messaggio stesso.

Assistenza per gli utenti internazionali

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

Miglioramenti RTL

Android 4.3 include miglioramenti delle prestazioni RTL e un supporto RTL più ampio per i widget dell'interfaccia utente del framework, tra cui ProgressBar/Spinner e ExpandableListView. Ulteriori informazioni di debug visibili tramite lo strumentouiautomatorviewer. Inoltre, ora sono supportati da RTL anche altri componenti dell'interfaccia utente di sistema, come le notifiche, la barra di navigazione e la barra delle app.

Per offrire un'esperienza migliore a livello di sistema negli script RTL, ora un maggior numero di app di sistema predefinite supporta i layout RTL, tra cui Avvio, Impostazioni rapide, Telefono, Contatti, Assistente alla configurazione, Orologio, Download e altre ancora.

Utility per la localizzazione

Le pseudo-lingue 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 un'API semplice per l'inserimento di a capo nelle stringhe Unicode, in modo che i dati dello script RTL vengano visualizzati come previsto nei messaggi con locale LTR 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 supporto nell'SDK Android.

Per aiutarti a gestire la formattazione della data tra le impostazioni internazionali, Android 4.3 include un nuovo metodo getBestDateTimePattern() che genera automaticamente la forma localizzata migliore possibile di una data UTS Unicode per le impostazioni internazionali specificate. È un modo pratico per offrire un'esperienza più localizzata ai tuoi utenti.

Per aiutarti a testare più facilmente la tua app in altre lingue, Android 4.3 introduce gli pseudo-codici paese come nuova opzione per gli 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 il test con un pseudo-locale per l'inglese con accento, che ti consente di vedere come funziona la tua UI con gli accenti e i caratteri delle scritture utilizzati in una serie di 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 fornire parità di navigazione con l'input basato sui gesti. Il servizio riceve gli eventi e può elaborarli in base alle esigenze prima che vengano trasmessi al sistema o ad altre app installate.

I servizi di accessibilità possono dichiarare nuovi attributi delle funzionalità per descrivere cosa possono fare i loro servizi e quali funzionalità della piattaforma utilizzano. Ad esempio, possono dichiarare la possibilità di filtrare gli eventi chiave, recuperare i contenuti delle finestre, attivare la funzionalità Esplora con tocco o le funzionalità 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 delle funzionalità del servizio per generare una finestra di dialogo di attivazione per gli utenti, in modo che possano visualizzare e accettare le funzionalità prima del lancio.

Sulla base del 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 dell'utente e analizzando i contenuti dello schermo. Tramite 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. È un modo efficace per automatizzare i test in scenari utente realistici, incluse azioni o sequenze che si estendono su più app.

Enterprise e sicurezza

Configurazione Wi-Fi per le reti WPA2 Enterprise

Ora le app possono configurare le credenziali Wi-Fi necessarie per le connessioni ai punti di accesso WPA2 Enterprise. Gli sviluppatori possono utilizzare nuove API per configurare le credenziali EAP (Extensible Authentication Protocol) e EAP incapsulato (fase 2) per i metodi di autenticazione utilizzati nell'azienda. Le app con l'autorizzazione di accesso e modifica del Wi-Fi possono configurare le credenziali di autenticazione per una serie di metodi di autenticazione EAP e di fase 2.

Sandbox Android rinforzata con SELinux

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

Miglioramenti a KeyChain

L'API KeyChain ora fornisce un metodo che consente alle applicazioni di confermare che le chiavi a livello di sistema sono associate a un root of trust hardware per il dispositivo. In questo modo, hai a disposizione un luogo in cui creare o memorizzare chiavi private che non possono essere esportate dal dispositivo, anche in caso di compromissione del root o del kernel.

Fornitore di Android Keystore

Android 4.3 introduce un provider del keystore e API che consentono alle applicazioni di creare chiavi per uso esclusivo. Utilizzando le API, le app possono creare o memorizzare chiavi private che non possono essere viste o utilizzate da altre app e possono essere aggiunte al keystore senza alcuna interazione da parte dell'utente.

Il provider del keystore offre gli stessi vantaggi di sicurezza dell'API KeyChain per le credenziali a livello di sistema, ad esempio l'associazione delle credenziali a un dispositivo. Le chiavi private nel keystore non possono essere esportate dal dispositivo.

Limitare Setuid dalle app per Android

La partizione /system è ora montata nosuid per i processi generati da zygote, impedendo alle applicazioni Android di eseguire programmi setuid. In questo modo si riduce la superficie di attacco del root e la probabilità di potenziali vulnerabilità di sicurezza.

Nuovi modi per analizzare il rendimento

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

Log di Systrace migliorati

Android 4.3 supporta una versione avanzata dello strumento Systrace, più facile da usare e che ti consente di accedere a più tipi di informazioni per profilare il rendimento della tua app. Ora puoi raccogliere i dati delle tracce da moduli hardware, funzioni del kernel, VM Dalvik, inclusa la raccolta dei rifiuti, il 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 begin/end di Systrace. Quando le sezioni di codice contrassegnate vengono eseguite, il sistema scrive gli eventi inizio/fine nel log traccia. L'impatto sul rendimento della tua app è minimo, pertanto i tempi registrati ti forniscono una visione accurata di cosa sta facendo la tua app.

Puoi visualizzare gli eventi specifici dell'app in una sequenza temporale nel file di output di Systrace e analizzarli nel contesto di altri dati di traccia nello spazio utente e nel kernel. Insieme ai tag Systrace esistenti, le sezioni di app personalizzate possono offrirti nuovi modi per comprendere il rendimento 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 gli sviluppatori per aiutarti ad analizzare il rendimento della tua app e individuare i problemi di rendering su qualsiasi dispositivo o emulatore.

Nell'opzione Profila il rendering GPU ora puoi visualizzare sullo schermo la frequenza frame effettiva della tua app 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 impiegato per creare i comandi di disegno (blu), per emettere i comandi (arancione) e per attendere il completamento dei comandi (giallo). Il sistema aggiorna continuamente i grafici sullo schermo, mostrando un grafico per ogni attività visibile, inclusa la barra di navigazione e la barra delle notifiche.

Una linea verde evidenzia la soglia di 16 ms per le operazioni di rendering, in modo da poter valutare la frequenza frame effettiva della tua app rispetto a un obiettivo di 60 fps (poiché 1/60 di secondo equivale a circa 16 ms). Se noti operazioni che attraversano la linea verde, puoi analizzarle ulteriormente utilizzando Systrace e altri strumenti.

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

Avviso di modalità rigorosa per gli URI dei file

L'ultima aggiunta allo strumento StrictMode è un vincolo dei criteri che avvisa quando la tua app espone un URI file:// al sistema o a un'altra app. In alcuni casi l'app di destinazione potrebbe non avere accesso al percorso dell'URI file://, pertanto, quando condividi file tra app, deve essere utilizzato un URI content:// (con l'autorizzazione appropriata). Queste nuove norme ti aiutano a rilevare e correggere questi casi. Se stai cercando un modo pratico per archiviare ed esporre i file ad altre app, prova a utilizzare il provider di contenuti FileProvider disponibile nella libreria di assistenza.

Android 4.2

Android 4.2 su smartphone 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 rinnovata e nuove funzionalità per utenti e sviluppatori. Questo documento fornisce un'anteprima delle novità per gli sviluppatori.

Consulta il documento 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 all'indirizzo www.android.com.

Più veloce, più fluida e più reattiva

Android 4.2 si basa sui miglioramenti delle prestazioni già inclusi in Jelly Bean, come vsync timing, triple buffering, latenza tocco ridotta e boost in input della CPU, e aggiunge nuove ottimizzazioni che rendono Android ancora più veloce.

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

Una serie di ottimizzazioni di rendering di WebView rendono lo scorrimento delle pagine web più fluido e privo di jitter e ritardi.

Renderscript Compute di Android è la prima piattaforma di calcolo trasferita per l'esecuzione diretta su una GPU di dispositivo mobile. Sfrutta automaticamente le risorse di calcolo GPU, se possibile, migliorando notevolmente le prestazioni per l'elaborazione di grafica e immagini. Qualsiasi app che utilizza Renderscript su un dispositivo supportato può trarre immediatamente vantaggio da questa integrazione della GPU senza ricompilazione.

Interfaccia utente perfezionata e aggiornata

Android 4.2 perfeziona l'esperienza utente di Jelly Bean e offre a tutti i tablet modelli di interfaccia utente di Android familiari, come barra delle app, barra di sistema e finestra delle notifiche.

Ora tutti i formati dello schermo dispongono della barra di stato in alto, con accesso a scorrimento alle notifiche e un nuovo menu Impostazioni rapide. La familiare barra di sistema viene visualizzata in basso, con i pulsanti facilmente accessibili con entrambe le mani. La Barra delle applicazioni è disponibile anche su tutti i formati dello schermo.

Un tablet, molti utenti

Ora più utenti possono condividere un singolo tablet Android, con ciascun utente che ha accesso comodo a uno spazio per utenti dedicato. Gli utenti possono passare ai propri spazi con un solo tocco dalla schermata di blocco.

Su un dispositivo multiutente, Android offre a ogni utente un ambiente separato, incluso lo spazio di archiviazione della scheda SD emulata specifico per l'utente. Gli utenti hanno anche le proprie schermate Home, widget, account, impostazioni, file e app, che il sistema mantiene separati. Tutti gli utenti condividono i servizi di sistema di base, ma il sistema garantisce che le applicazioni e i dati di ciascun utente rimangano isolati. In pratica, ogni uno dei più utenti ha il proprio dispositivo Android.

Gli utenti possono installare e disinstallare app in qualsiasi momento nei propri ambienti. Per risparmiare spazio di archiviazione, Google Play scarica un APK solo se non è già stato installato da un altro utente sul dispositivo. Se l'app è già installata, Google Play registra l'installazione del nuovo utente nel solito modo, 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 per l'utente.

Per gli sviluppatori, il supporto multiutente è trasparente: le app non devono fare nulla di speciale per funzionare normalmente in un ambiente multiutente e non è necessario apportare modifiche agli APK esistenti o pubblicati. Il sistema gestisce la tua app in ogni spazio utente come farebbe in un ambiente monoutente.

Nuovi modi per coinvolgere gli utenti

Widget della schermata di blocco del calendario

Puoi estendere i widget delle app in modo che vengano eseguiti nella schermata di blocco, per accedere immediatamente ai tuoi contenuti.

Widget della schermata di blocco

In Android 4.2, gli utenti possono posizionare i widget delle app direttamente sulle schermate di blocco per accedere immediatamente ai contenuti delle app preferite senza dover sbloccare il dispositivo. Gli utenti possono aggiungere fino a cinque widget della 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 verso sinistra e verso destra per visualizzare diversi riquadri e i relativi widget.

Come tutti i widget delle app, i widget della schermata di blocco possono mostrare qualsiasi tipo di contenuto e possono accettare l'interazione diretta dell'utente. Possono essere completamente autonomi, come un widget che offre controlli per riprodurre musica, oppure possono consentire agli utenti di passare direttamente a un'attività nella tua app, dopo averla sbloccata man mano che procede, se necessario.

Per gli sviluppatori, i widget della schermata di blocco rappresentano un ottimo nuovo modo per coinvolgere gli utenti. Ti consentono di mettere i tuoi contenuti davanti agli utenti in una posizione che vedranno spesso e ti offrono più opportunità per indirizzare gli utenti direttamente alla tua app.

Puoi sfruttare questa nuova funzionalità creando un nuovo widget dell'app o ampliando un widget della schermata Home esistente. Se la tua app include già widget della schermata Home, puoi estenderli alla schermata di blocco con modifiche minime. Per offrire agli utenti un'esperienza ottimale, puoi aggiornare il widget in modo che utilizzi l'area completa della schermata di blocco, se disponibile, e ridimensionarlo se necessario su schermi più piccoli. Puoi anche aggiungere ai widget funzionalità che potrebbero essere particolarmente utili o pratiche sulla schermata di blocco.

Daydream

Daydream è una modalità salvaschermo interattiva che si avvia quando il dispositivo di un utente è agganciato alla base o in carica. In questa modalità, il sistema avvia daydream, un servizio di contenuti remoti fornito da un'app installata, come salvaschermo del dispositivo. Un utente può attivare Daydream dall'app Impostazioni e scegliere il daydream da visualizzare.

Le daydream combinano le migliori funzionalità degli sfondi animati e dei widget della schermata Home, ma sono più potenti. Ti consentono di offrire qualsiasi tipo di contenuti in un contesto completamente nuovo, con interazioni utente come la visualizzazione di foto, la riproduzione di audio o video o il passaggio diretto alla tua app con un singolo tocco.

Poiché i sogni possono essere avviati automaticamente quando un dispositivo è in carica o agganciato alla base, rappresentano anche un ottimo modo per supportare nuovi tipi di esperienze utente, come la modalità di visualizzazione o di esposizione, la modalità demo o kiosk e la "modalità attrazione", il tutto senza bisogno di hardware speciale.

Modalità salvaschermo Daydream

Daydream ti consente di creare salvaschermo interattivi efficaci che mostrano qualsiasi tipo di contenuto.

Le attività di Daydream sono simili alle attività e possono fare tutto ciò che è possibile fare con le attività, dal rendering di una gerarchia dell'interfaccia utente (senza utilizzare RemoteViews) al disegno direttamente utilizzando Canvas, OpenGL, SurfaceTexture e altro ancora. Possono riprodurre contenuti video e audio e persino accettare l'interazione diretta degli utenti. Tuttavia, le daydream non sono attività, quindi non influiscono sulla pila di app non in primo piano, non vengono visualizzate nella sezione Recenti e non possono essere avviate direttamente dalla tua app.

L'implementazione di una modalità Sogno è semplice e puoi sfruttare i componenti e le risorse dell'interfaccia utente che hai già creato per altre parti della tua app. Puoi fornire più modalità Sogno nella tua app e offrire contenuti e impostazioni di visualizzazione distinti per ciascuna.

Supporto del display esterno

Android 4.2 introduce il supporto della piattaforma per i display esterni che va ben oltre il mirroring: ora le app possono scegliere come target contenuti unici per uno o più display collegati a un dispositivo Android. Le app possono sfruttare questa funzionalità per offrire agli utenti nuovi tipi di interazioni ed esperienze di intrattenimento.

Gestore della visualizzazione

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

Finestra di presentazione

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

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

Una presentazione offre alla tua app il controllo completo sulla finestra di visualizzazione remota e sui suoi contenuti e ti consente di gestirla in base a eventi di input dell'utente come pressioni dei tasti, gesti, eventi di movimento e altro ancora. Puoi utilizzare tutti gli strumenti normali 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 in streaming o le anteprime della fotocamera.

Selezione della visualizzazione preferita

Quando sono disponibili più display esterni, puoi creare tutte le Presentazioni di cui hai bisogno, ognuna delle quali mostra contenuti unici su un display specifico. In molti casi, potresti voler mostrare i tuoi contenuti su un solo display esterno, ma sempre su quello più adatto ai contenuti della presentazione. A questo scopo, il sistema può aiutare la tua app a scegliere il display migliore da utilizzare.

Per trovare il display migliore da utilizzare, la tua app può eseguire una query sul gestore del display per recuperare il display di presentazione preferito del sistema e ricevere callback quando questo cambia. In alternativa, puoi utilizzare il servizio di router multimediale, esteso in Android 4.2, per ricevere notifiche quando cambia il percorso video di sistema. Per impostazione predefinita, la tua app può mostrare i contenuti nella scheda Attività principale finché non viene collegato un display di presentazione preferito, a quel punto può passare automaticamente ai contenuti della presentazione sul display preferito. Le tue app possono anche utilizzare MediaRouteActionProvider e MediaRouteButton del media router per offrire un'interfaccia utente di selezione della visualizzazione standard.

Contenuti protetti

Per le app che gestiscono contenuti protetti o criptati, l'API display ora segnala le funzionalità video sicure dei display collegati. L'app esegue una query su un display per scoprire se offre un'uscita video sicura o fornisce buffer grafici protetti e poi sceglie lo stream o la decodifica dei contenuti appropriati per rendere visibili i contenuti. Per una maggiore sicurezza sugli oggetti SurfaceView, la tua app può impostare un flag di sicurezza per indicare che i contenuti non devono mai apparire negli screenshot o in un'uscita di visualizzazione non sicura, anche se in mirroring.

Visualizzazione wireless

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

Le app possono utilizzare i display wireless nello stesso modo in cui utilizzano altri display esterni e non è necessario alcun intervento aggiuntivo. Il sistema gestisce la connessione di rete e trasmette in streaming la presentazione o altri contenuti dell'app sul display wireless, in base alle esigenze.

Supporto nativo RTL

Mirroring del layout RTL

Ora gli sviluppatori possono specchiare i layout per le lingue con scrittura da destra a sinistra.

Android 4.2 introduce il supporto nativo completo per i layout RTL (da destra verso sinistra), incluso il mirroring del layout. Con il supporto nativo RTL, puoi offrire la stessa straordinaria esperienza con l'app a tutti i tuoi utenti, indipendentemente dal fatto che la loro lingua utilizzi uno script da leggere da destra verso sinistra o da sinistra verso destra.

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

La tua app può sfruttare il mirroring del layout RTL con il minimo sforzo. Se vuoi che l'app venga specchiata, dichiara semplicemente un nuovo attributo nel manifest dell'app e modifica tutte le proprietà di layout "sinistra/destra" con i nuovi equivalenti "inizio/fine". Il sistema gestisce quindi il mirroring e la visualizzazione dell'interfaccia utente in modo appropriato.

Per un controllo preciso sull'interfaccia utente dell'app, Android 4.2 include nuove API che ti consentono di gestire l'orientamento del layout, l'orientamento del testo, l'allineamento del testo, la gravità e l'orientamento della lingua nei componenti View. Puoi anche creare versioni personalizzate di layout, drawable e altre risorse per la visualizzazione 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 ti consente di visualizzare le proprietà di inizio/fine, l'orientamento del layout, l'orientamento del testo e l'allineamento del testo per tutte le viste nella gerarchia.

Miglioramenti per le 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 caratteri: Nanum (나눔글꼴) Gothic, un carattere Unicode progettato appositamente per lo script in lingua coreana.
  • Miglioramento del supporto per il testo verticale giapponese visualizzato nelle WebView.
  • Miglioramento del kerning e del posizionamento dei caratteri per i caratteri predefiniti in indiano, thai, arabo ed ebraico.

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

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

Nuovi modi per creare un'interfaccia utente 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 di altri frammenti. Per qualsiasi frammento, un nuovo gestore dei frammenti ti consente di inserire altri frammenti come nodi secondari nella gerarchia della visualizzazione.

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

Per consentirti di sfruttare i frammenti nidificati in modo più ampio nella tua app, questa funzionalità è stata aggiunta alla versione più recente della Android Support Library.

Accessibilità

Ora il sistema aiuta i servizi di accessibilità a distinguere tra esplorazione con tocco e gesti di accessibilità in modalità di esplorazione con tocco. Quando un utente tocca lo schermo, il sistema comunica al servizio che è iniziata un'interazione generica con il tocco. Poi monitora la velocità dell'interazione touch e determina se si tratta di un'esplorazione touch (lenta) o di un gesto di accessibilità (rapido) e invia una notifica al servizio. Al termine dell'interazione tocco, il sistema informa il 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 di accessibilità per i dispositivi braille.

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

Fotocamera migliorata con HDR

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

Inoltre, ora il framework fornisce un'API per consentire alle app di verificare se è possibile disattivare il suono dell'otturatore della fotocamera. Le app possono quindi consentire all'utente di disattivare il suono o di scegliere un suono alternativo al suono dell'otturatore standard, 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.

Filterscript

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

Filterscript è ideale per l'accelerazione hardware di semplici operazioni di elaborazione delle immagini e di calcolo, come quelle che potrebbero essere scritte per gli shader di frammenti OpenGL ES. Poiché applica un insieme di vincoli meno rigidi all'hardware, le tue operazioni vengono ottimizzate e accelerate su più tipi di chipset dei dispositivi. Qualsiasi app che ha come target il livello API 17 o versioni successive può utilizzare Filterscript.

Funzioni intrinseche dello script

In Android 4.2, Renderscript aggiunge il supporto per un insieme di istruzioni intrinseche dello script, ovvero primitive di filtraggio preimplementate e accelerate per ridurre la quantità di codice da scrivere e garantire il massimo guadagno in termini di prestazioni per la tua app.

Le funzioni intrinseche sono disponibili per le operazioni di miscelazione, sfocatura, matrice di colori, convoluzione 3x3 e 5x5, tabella di ricerca per canale e conversione di un buffer YUV Android in RGB.

Gruppi di script

Ora puoi creare gruppi di script Renderscript ed eseguire tutti con una singola chiamata come se facessero parte di un unico script. In questo modo, Renderscript può ottimizzare l'esecuzione degli script in modi che non sarebbe possibile se gli script venissero eseguiti singolarmente.

Grafico delle ottimizzazioni di Renderscript

Benchmark di elaborazione delle immagini Renderscript eseguiti su diverse versioni della piattaforma Android (Android 4.0, 4.1 e 4.2) solo in CPU su un dispositivo Galaxy Nexus.

Benchmark di elaborazione delle immagini di Renderscript che confrontano le operazioni eseguite con GPU + CPU con quelle eseguite solo in CPU sullo stesso dispositivo Nexus 10.

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

Miglioramenti continui all'ottimizzazione

Quando utilizzi Renderscript per le operazioni di calcolo, le tue app beneficiano di miglioramenti continui delle prestazioni e dell'ottimizzazione nel motore Renderscript stesso, senza alcun impatto sul codice dell'app o necessità di ricompilarli.

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

GPU Compute

Renderscript Compute è la prima piattaforma di calcolo portabile per l'esecuzione diretta sulla GPU di un dispositivo mobile. Ora sfrutta automaticamente le risorse di calcolo GPU ogni volta che è possibile per migliorare le prestazioni. Con l'integrazione della GPU, anche i calcoli più complessi per l'elaborazione di immagini o grafica possono essere eseguiti con un miglioramento significativo delle prestazioni.

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

Nuove opzioni sviluppatore integrate

Il sistema Android 4.2 include una serie di nuove opzioni per gli sviluppatori che semplificano la creazione di app dall'aspetto accattivante e dal buon rendimento. Le nuove opzioni mettono a disposizione funzionalità per il debug e la profilazione dell'app da qualsiasi dispositivo o emulatore.

Sui dispositivi con Android 4.2, le opzioni per gli sviluppatori sono nascoste per impostazione predefinita, per contribuire a creare un'esperienza migliore per gli utenti. Puoi visualizzare le opzioni sviluppatore in qualsiasi momento toccando 7 volte Impostazioni > Informazioni sullo smartphone > Numero build su qualsiasi dispositivo Android compatibile.

Le nuove opzioni sviluppatore offrono più modi per eseguire il profiling e il debug su un dispositivo.

Le nuove opzioni per sviluppatori in Android 4.2 includono:

  • Crea segnalazione di bug: acquisisce immediatamente uno screenshot e 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 nel menu di accensione: aggiunge una nuova opzione al menu di accensione e alle Impostazioni rapide del dispositivo per generare una segnalazione di bug (vedi sopra).
  • Verifica app tramite USB: consente di disattivare i controlli delle app per il sideload tramite USB, continuando a controllare le app da altre fonti come il browser. In questo modo, puoi velocizzare il processo di sviluppo mantenendo attiva la funzionalità di sicurezza.
  • Mostra aggiornamenti dei livelli hardware: fa lampeggiare in verde i livelli hardware quando vengono aggiornati.
  • Mostra overdraw GPU: evidenzia le aree di overdraw della GPU.
  • Forza MSAA 4x: attiva MSAA 4x nelle applicazioni OpenGL ES 2.0.
  • Simula display secondari: crea una o più finestre di overlay non sicure sullo schermo corrente da utilizzare come display remoto simulato. Puoi controllare le dimensioni e la densità del display simulato.
  • Attiva tracce OpenGL: consente di monitorare l'esecuzione di OpenGL utilizzando Logcat, Systrace o lo stack di chiamate su glGetError.

Nuove tecnologie di piattaforma

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

Miglioramenti alla sicurezza

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

  • Verifica delle applicazioni: gli utenti possono scegliere di attivare "Verifica app" e consentire che le applicazioni vengano sottoposte a screening da parte di un verificatore di app prima dell'installazione. La verifica delle app può avvisare l'utente se tenta di installare un'app che potrebbe essere dannosa. Se un'applicazione è particolarmente dannosa, può bloccarne l'installazione.
  • Maggiore controllo sugli SMS premium: Android invierà una notifica se un'applicazione tenta di inviare un SMS a un codice corto che utilizza servizi premium che potrebbero 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 finché non viene stabilita una connessione VPN. In questo modo le applicazioni non possono inviare dati su altre reti.
  • Ancoraggio dei certificati: l'implementazione SSL di libcore ora supporta l'ancoraggio dei certificati. I domini bloccati riceveranno un errore di convalida del certificato se il certificato non è collegato a un insieme di certificati previsti. In questo modo, è possibile proteggersi da eventuali compromissioni delle autorità di certificazione.
  • Visualizzazione migliorata delle autorizzazioni Android: le autorizzazioni sono state organizzate in gruppi più facilmente comprensibili dagli utenti. Durante la revisione delle autorizzazioni, l'utente può fare clic sull'autorizzazione per visualizzare informazioni più dettagliate.
  • Ottimizzazione di installd: il daemon installd non viene eseguito come utente root, riducendo la potenziale superficie di attacco per l'escalation dei privilegi di root.
  • Ottimizzazione degli script di inizializzazione: ora gli script di inizializzazione applicano la semantica O_NOFOLLOW per impedire attacchi correlati ai link simbolici.
  • FORTIFY_SOURCE: ora Android implementa FORTIFY_SOURCE. Viene utilizzato dalle librerie di sistema e dalle applicazioni per impedire la corruzione della memoria.
  • Configurazione predefinita di ContentProvider: per le applicazioni il cui livello API target è 17, per impostazione predefinita "export" sarà impostato su "false" 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. È stato aggiunto il supporto di SSLSocket per TLSv1.1 e TLSv1.2 utilizzando OpenSSL 1.0.1
  • Correzioni di sicurezza: le librerie open source di cui è stato eseguito l'upgrade con correzioni di sicurezza includono WebKit, libpng, OpenSSL e LibXML. Android 4.2 include inoltre correzioni per vulnerabilità specifiche di Android. Le informazioni su queste vulnerabilità sono state fornite ai membri di Open Handset Alliance e le correzioni sono disponibili nel progetto open source Android. Per migliorare la sicurezza, alcune versioni precedenti di Android potrebbero includere anche 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 compatibilità e affidabilità migliori.

Audio a bassa latenza

Android 4.2 migliora il supporto per la riproduzione audio a bassa latenza, a partire dai miglioramenti apportati nella release di Android 4.1 per la latenza di uscita audio utilizzando le API OpenSL ES, Soundpool e Generatore di suoni. Questi miglioramenti dipendono dal supporto hardware: i dispositivi che offrono queste funzionalità audio a bassa latenza possono pubblicizzarne il supporto alle app tramite una costante della funzionalità hardware. Sono fornite nuove API AudioManager per eseguire query sulla frequenza di campionamento e sulla dimensione del buffer audio nativi, da utilizzare sui dispositivi che supportano questa funzionalità.

Nuova interfaccia hardware della videocamera

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

Nuova interfaccia hardware e interfaccia del controller NFC

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

Ottimizzazioni del runtime Dalvik

Il runtime Dalvik include miglioramenti per le prestazioni e la sicurezza su 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 più di 512 MB
  • Le implementazioni predefinite di SecureRandom e Cipher.RSA ora utilizzano OpenSSL
  • Supporto di SSLSocket per TLSv1.1 e TLSv1.2 tramite OpenSSL 1.0.1
  • Nuovo supporto intrinseco per i metodi abs, min, max e sqrt di StrictMath
  • BouncyCastle aggiornato alla versione 1.47
  • zlib aggiornato alla versione 1.27
  • dlmalloc aggiornato alla versione 2.8.6

Android 4.1

Ti diamo il 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 alla piattaforma e aggiunto nuove funzionalità per utenti e sviluppatori. Questo documento fornisce un'idea delle novità per gli sviluppatori.

Per un'analisi dettagliata delle nuove API per sviluppatori, consulta il documento API Android 4.1.

Scopri di più sulle funzionalità di Jelly Bean per gli utenti all'indirizzo www.android.com.

Più veloce, più fluida e più reattiva

Android 4.1 è ottimizzato per offrire le migliori prestazioni e la latenza di tocco più bassa di Android, in un'interfaccia utente semplice e intuitiva.

Per garantire un frame rate costante, Android 4.1 estende il timing vsync a tutti i disegni e le animazioni eseguiti dal framework Android. Tutto funziona in modo sincrono rispetto a un intervallo di 16 millisecondi del vsync (rendering dell'applicazione, eventi touch, composizione della schermata e aggiornamento del display), in modo che i frame non vadano avanti o indietro.

Android 4.1 aggiunge anche il triple buffering nella pipeline grafica, per un rendering più coerente che rende tutto più fluido, dallo scorrimento alla visualizzazione di pagine e animazioni.

Android 4.1 riduce la latenza del tocco non solo sincronizzando il tocco con il timing vsync, ma anche anticipando dove si troverà il dito al momento dell'aggiornamento dello schermo. Il risultato è una risposta al tocco più reattiva e uniforme. Inoltre, dopo periodi di inattività, Android applica un aumento dell'input della CPU al successivo evento tocco per assicurarsi che non ci sia latenza.

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

Accessibilità migliorata

Le nuove API per i servizi di accessibilità ti consentono di gestire i gesti e il tasto di attivazione dell'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 la funzionalità Esplora con tocco sono stati riprogettati per utilizzare l'attenzione all'accessibilità per un utilizzo più semplice e offrire un insieme completo di API per gli sviluppatori.

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

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

Assistenza per gli utenti internazionali

Testo bidirezionale e supporto di altre lingue

Android 4.1 ti aiuta a raggiungere più utenti grazie al supporto del testo bidirezionale negli elementi TextView ed EditText. Le app possono visualizzare il testo o gestire la modifica del testo in script da sinistra a destra o da destra a sinistra. Le app possono utilizzare nuovi caratteri e impostazioni internazionali in arabo ed ebraico.

Altri tipi di supporto per le nuove lingue includono:

  • Altre lingue indiane: kannada, telugu e malayalam
  • I nuovi caratteri emoji della versione 6.0 di Unicode
  • Miglioramento del supporto dei glifi per gli utenti giapponesi (vengono visualizzate le versioni dei glifi specifiche per il giapponese quando la lingua di sistema è impostata su giapponese)
  • Glifi arabi ottimizzati per WebView, oltre ai glifi arabi per TextView
  • Supporto del testo verticale nelle WebView, inclusi il testo Ruby e altri glifi di testo verticale
  • Il grassetto sintetico è ora disponibile per tutti i caratteri che non dispongono di glifi in grassetto dedicati

Mappature dei tasti installabili dall'utente

La piattaforma ora supporta le mappe della tastiera installabili dall'utente, ad esempio per tastiere internazionali aggiuntive e tipi di layout speciali. Per impostazione predefinita, Android 4.1 include 27 mappe dei tasti internazionali per le tastiere, inclusa Dvorak. Quando gli utenti collegano una tastiera, possono andare 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 tasti all'altra utilizzando una scorciatoia (Ctrl + Spazio).

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

Nuovi modi per creare un'interfaccia utente accattivante

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

Notifiche espandibili

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

Android 4.1 introduce un aggiornamento importante al framework delle notifiche di Android. Ora le app possono mostrare agli utenti notifiche più grandi e complete che possono essere espanse e compresse con un pizzico o uno scorrimento. Le notifiche supportano nuovi tipi di contenuti, tra cui le foto, hanno una priorità configurabile e possono persino includere più azioni.

Grazie a un strumento per la creazione di notifiche migliorato, le app possono creare notifiche che utilizzano un'area più grande, fino a 256 dp di altezza. Sono disponibili tre stili di notifiche basate su modelli:

  • BigTextStyle: una notifica che include un oggetto TextView a più righe.
  • BigInboxStyle: una notifica che mostra qualsiasi tipo di elenco, ad esempio 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 visualizzazione remota.

Le app possono aggiungere fino a tre azioni a una notifica, 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 visitare l'app.

Con le notifiche espandibili, le app possono fornire all'utente più informazioni, senza sforzo e su richiesta. Gli utenti mantengono il controllo e possono tenere premuta qualsiasi notifica per visualizzare informazioni sul mittente e, facoltativamente, disattivare ulteriori notifiche dall'app.

I widget delle app possono ridimensionarsi automaticamente per adattarsi alla schermata Home e caricare contenuti diversi man mano che le dimensioni cambiano.

Widget di app ridimensionabili

Android 4.1 introduce widget dell'app migliorati che possono ridimensionarsi automaticamente in base a dove l'utente li inserisce nella schermata Home, alle dimensioni a cui li espande e allo spazio disponibile nella schermata Home. Le nuove API Widget dell'app ti consentono di sfruttare questa opportunità per ottimizzare i contenuti dei widget dell'app man mano che le dimensioni dei widget cambiano.

Quando un widget cambia dimensioni, il sistema invia una notifica al provider di widget dell'app host, che può ricaricare i contenuti del widget in base alle esigenze. Ad esempio, un widget potrebbe mostrare immagini più grandi e dettagliate o funzionalità o opzioni aggiuntive. Gli sviluppatori possono comunque mantenere il controllo sulle dimensioni massime e minime e aggiornare altre opzioni dei widget in base alle esigenze.

Puoi anche fornire layout separati per i widget in formato orizzontale e verticale, che il sistema espande in base alle esigenze quando cambia l'orientamento dello schermo.

Ora i widget delle app possono essere visualizzati in launcher di terze parti e altre app host tramite un nuovo intent di associazione (AppWidgetManager.ACTION_APPWIDGET_BIND).

Navigazione semplificata delle attività

Android 4.1 ti consente di gestire facilmente il menu di navigazione "Indietro" disponibile per gli utenti all'interno delle tue app e contribuisce a garantire un'esperienza coerente per gli utenti.

Puoi definire la navigazione Up prevista per i singoli componenti dell'attività della tua UI aggiungendo un nuovo attributo XML nel file manifest dell'app. Durante l'esecuzione, quando vengono avviate le attività, il sistema estrae l'albero di navigazione Up dal file manifest e crea automaticamente la navigazione di indicazione Up nell'app bar. Gli sviluppatori che dichiarano la navigazione verso l'alto nel manifest non devono più gestire la navigazione tramite callback in fase di esecuzione, anche se possono farlo anche se necessario.

È disponibile anche una nuova classe TaskStackBuilder che consente di creare rapidamente una serie di attività sintetiche da avviare immediatamente o da utilizzare quando un'attività viene lanciata da un PendingIntent. La creazione di una serie di attività sintetica è particolarmente utile quando gli utenti avviano le attività da visualizzazioni remote, ad esempio da widget e notifiche della schermata Home, perché consente allo sviluppatore di offrire un'esperienza gestita e coerente nella navigazione a ritroso.

Animazioni semplici per l'avvio dell'attività

Puoi utilizzare una nuova classe di assistenza, ActivityOptions, per creare e controllare l'animazione visualizzata quando avvii le attività. Tramite la classe di assistenza, puoi specificare risorse di animazione personalizzate da utilizzare all'avvio dell'attività o richiedere nuove animazioni di zoom che partono da qualsiasi rettangolo specificato sullo schermo e che, facoltativamente, includono una bitmap di miniatura.

Transizioni alle modalità Luce spenta e Schermo intero

I nuovi flag dell'interfaccia utente di sistema in Visualizza ti consentono di passare senza problemi da una normale interfaccia utente dell'applicazione (con barra delle app, barra di navigazione e barra di sistema visibili) alla "modalità di spegnimento" (con barra di stato e barra delle app nascoste e barra di navigazione attenuata) o alla "modalità a schermo intero" (con barra di stato, barra delle app e barra di navigazione tutte nascoste).

Nuovi tipi di visualizzazioni trasferibili 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 visualizzazioni remote e gestire gli allineamenti delle visualizzazioni secondarie con una gerarchia dell'interfaccia utente meno profonda. ViewStub è una vista invisibile di dimensioni pari a zero che può essere utilizzata per gonfiare in modo pigro le risorse di layout in fase di esecuzione.

Anteprima sfondo animato

Android 4.1 semplifica per gli utenti la ricerca e l'installazione di sfondi animati dalle app che li includono. Se la tua app include 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 ad alta risoluzione

Con Android 4.1 puoi memorizzare foto dei contatti fino a 720 x 720, rendendo i contatti ancora più ricchi e personali. Le app possono archiviare e recuperare le foto dei contatti in queste dimensioni o in qualsiasi altra dimensione necessaria. Le dimensioni massime delle foto supportate su dispositivi specifici possono variare, pertanto le app devono eseguire una query sul provider di contatti integrato in fase di esecuzione per ottenere le dimensioni massime per il dispositivo corrente.

Nuovi tipi di input e funzionalità

Scopri di più 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 indica che è collegata 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 al meglio tutti i dispositivi di input connessi e disponibili.

Le app possono eseguire query sul gestore dei dispositivi per enumerare tutti i dispositivi di input attualmente collegati e conoscere le funzionalità di ciascuno.

Controllare il vibratore sui dispositivi di input

Tra le altre funzionalità, ora le app possono utilizzare qualsiasi servizio di 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 frame più costante e a un'interfaccia utente fluida e stabile. Per consentire anche alle app di trarre vantaggio da questa funzionalità, Android 4.1 espande la sincronizzazione verticale a tutti i disegni e le animazioni avviati dalle app. In questo modo, è possibile ottimizzare le operazioni sul thread dell'interfaccia utente e fornire una base di tempo stabile per la sincronizzazione.

Le app possono sfruttare la sincronizzazione verticale senza costi tramite il framework di animazione di Android. Il framework di animazione ora utilizza il timing vsync per gestire automaticamente la sincronizzazione tra gli animatori.

Per utilizzi specializzati, le app possono accedere alla sincronizzazione verticale tramite le API esposte da una nuova classe Choreographer. Le app possono richiedere l'invalidazione nel frame vsync successivo, un buon modo per pianificare l'animazione quando l'app non utilizza il framework di animazione. Per utilizzi più avanzati, le app possono pubblicare un callback che verrà eseguito dalla classe Choreographer nel frame successivo.

Nuove azioni di animazione e tipi di transizione

Il framework di animazione ora ti consente di definire le azioni di inizio e fine da eseguire quando vengono eseguite le animazioni ViewPropertyAnimator per sincronizzarle 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 durante il corso dell'animazione. In precedenza, era buona prassi animare le visualizzazioni complesse impostando un livello prima di avviare un'animazione e poi gestire un evento onAnimationEnd() per rimuovere il livello al termine dell'animazione. Ora il metodo withLayer() su ViewPropertyAnimator semplifica questa procedura con una singola chiamata al metodo.

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

Nuovi tipi di connettività

Android Beam

Android Beam è una popolare tecnologia basata su NFC che consente agli utenti di condividere istantaneamente i contenuti semplicemente toccando due smartphone con NFC integrato.

In Android 4.1, Android Beam semplifica la condivisione di immagini, video o altri payload utilizzando il Bluetooth per il trasferimento dei dati. Quando l'utente attiva un trasferimento, Android Beam passa dall'NFC al Bluetooth, rendendo davvero facile gestire il trasferimento di un file da un dispositivo all'altro.

Scoperta servizio di rete Wi-Fi

Android 4.1 introduce il supporto del ricerca dei servizi basata su DNS multicast, che consente alle applicazioni di trovare e connettersi ai servizi offerti dai dispositivi peer tramite reti Wi-Fi, inclusi dispositivi mobili, stampanti, fotocamere, lettori multimediali e altri. 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 di rilevamento dei servizi, le app possono creare e registrare qualsiasi tipo di servizio, in modo che qualsiasi altro dispositivo compatibile con NSD possa rilevarlo. 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 consumer possono utilizzare l'API per eseguire la scansione e rilevare i servizi disponibili dai dispositivi connessi alla rete Wi-Fi locale. Dopo la scoperta, le app possono utilizzare l'API per risolvere il servizio in un indirizzo IP e una porta tramite cui può stabilire una connessione socket.

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

Scoperta servizi P2P Wi-Fi

Ice Cream Sandwich ha introdotto il supporto del Wi-Fi peer-to-peer (P2P), una tecnologia che consente alle app di rilevare e accoppiarsi direttamente tramite una connessione peer-to-peer ad alta larghezza di banda (in conformità con il programma di certificazione Wi-Fi Direct™ della Wi-Fi Alliance). La tecnologia Wi-Fi P2P è ideale per condividere contenuti multimediali, foto, file e altri tipi di dati e sessioni, anche dove non sono disponibili reti di telefonia mobile o Wi-Fi.

Android 4.1 migliora la tecnologia Wi-Fi P2P aggiungendo il supporto dell'API per il ricerca dei servizi preassociati. La scoperta dei servizi preassociati consente alle tue app di ottenere informazioni più utili dai dispositivi nelle vicinanze sui servizi supportati prima di tentare di connettersi. Le app possono avviare il rilevamento di un servizio specifico e filtrare l'elenco dei dispositivi rilevati in base a quelli che supportano effettivamente il servizio o l'applicazione di destinazione.

Ad esempio, l'app potrebbe rilevare solo i dispositivi che sono "stampanti" o che hanno un gioco specifico disponibile, anziché rilevare tutti i dispositivi P2P Wi-Fi nelle vicinanze. D'altra parte, la tua app può pubblicizzare il servizio che fornisce ad altri dispositivi, che possono rilevarlo e negoziare una connessione. In questo modo, la ricerca e l'accoppiamento vengono semplificati notevolmente per gli utenti e le app possono sfruttare la tecnologia Wi-Fi P2P in modo più efficace.

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

Gestione della larghezza di banda della rete

Android 4.1 aiuta le app a gestire l'utilizzo dei dati in modo appropriato quando il dispositivo è connesso a una rete con misurazione del traffico, incluso il tethering a un hotspot mobile. Le app possono verificare 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 avere un quadro chiaro delle reti sensibili all'utilizzo dei dati e gestire di conseguenza la tua attività di rete.

Funzionalità per i nuovi media

Accesso ai codec multimediali

Android 4.1 fornisce accesso a basso livello ai codec hardware e software della piattaforma. Le app possono eseguire query sul sistema per scoprire quali codec multimediali di basso livello sono disponibili sul dispositivo e poi utilizzarli nel modo necessario. Ad esempio, ora puoi creare più istanze di un codec multimediale, mettere in coda i buffer di input e ricevere in cambio i buffer di output. Inoltre, il framework dei codec multimediali supporta i contenuti protetti. Le app possono eseguire query per trovare un codec disponibile in grado di riprodurre contenuti protetti con una soluzione DRM disponibile sul dispositivo.

Audio USB

Il supporto dell'uscita audio USB consente ai fornitori di hardware di creare hardware come le base di ricarica con audio che si interfacciano con i dispositivi Android. Questa funzionalità è disponibile anche con l'Open Accessory Development Kit (ADK) di Android per offrire a tutti gli sviluppatori la possibilità di creare il proprio hardware.

Attivazione della registrazione audio

Ora Android ti consente di attivare la registrazione audio in base al completamento di una traccia di riproduzione audio. Questa opzione è utile in situazioni come la riproduzione di un suono per indicare agli utenti di iniziare a parlare e registrare le loro voci. Questa funzionalità ti aiuta a sincronizzare la registrazione in modo da non registrare l'audio attualmente in riproduzione e impedisce che le registrazioni inizino troppo tardi.

Audio multicanale

Android 4.1 supporta l'audio multicanale sui dispositivi che dispongono di uscita audio multicanale hardware tramite la porta HDMI. L'audio multicanale ti consente di offrire agli utenti esperienze rich media per applicazioni come giochi, app di musica e video player. Per i dispositivi che non dispongono dell'hardware supportato, Android esegue automaticamente il downmix dell'audio in base al numero di canali supportati dal dispositivo (di solito 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 preelaborazione all'audio registrato, ad esempio per applicare la soppressione del rumore per migliorare la qualità della registrazione vocale, la cancellazione dell'eco per l'eco acustico e il controllo automatico del guadagno per l'audio con livelli di volume incoerenti. Queste app possono trarre vantaggio da questi pre-processori, in quanto richiedono una registrazione audio di alta qualità e pulita.

Collegamento in serie dell'audio

MediaPlayer supporta l'aggregazione di stream audio per riprodurre file audio senza interruzioni. Questo è utile per le app che richiedono transizioni fluide tra file audio, ad esempio lettori musicali per riprodurre album con tracce continue o giochi.

Media Router

Le nuove API MediaRouter, MediaRouteActionProvider e MediaRouteButton forniscono meccanismi e interfaccia utente standard per scegliere dove riprodurre i contenuti multimediali. È disponibile il supporto integrato per cuffie con cavo e cuffie e speaker Bluetooth A2DP e puoi aggiungere le tue opzioni di instradamento 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 dagli script. In questo modo puoi attivare le istruzioni NEON, come le operazioni matematiche vettoriali veloci, sul percorso della CPU, che altrimenti non sarebbero possibili con lo standard IEEE 754-2008 completo.

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

Browser e WebView Android

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

  • Esperienza utente migliore per i video HTML5, tra cui la riproduzione/la pausa con un tocco e la transizione fluida dalla modalità in linea a quella a schermo intero.
  • Velocità di rendering migliorata e utilizzo della memoria ridotto per prestazioni migliori di scorrimento e zoom.
  • Miglioramento delle prestazioni delle animazioni HTML5/CSS3/Canvas.
  • Miglioramento dell'inserimento di testo.
  • Motore JavaScript (V8) aggiornato per migliorare le prestazioni di JavaScript.
  • Supporto per la specifica HTML5 Media Capture aggiornata (l'attributo "capture" negli elementi input type=file).

API e servizi Google

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

Google Cloud Messaging per Android

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

GCM gestisce tutti i dettagli della coda dei messaggi e della loro consegna in modo efficiente ai dispositivi Android target. Supporta il multicasting dei messaggi e può raggiungere fino a 1000 dispositivi connessi contemporaneamente con una singola richiesta. Supporta anche i payload dei messaggi, il che significa che, oltre a inviare messaggi tickle 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 la registrazione è semplice. Per la registrazione, i download e la documentazione, visita la pagina Google Cloud Messaging.

Crittografia delle app

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

Aggiornamenti app intelligenti

Gli aggiornamenti intelligenti delle app sono una nuova funzionalità di Google Play che introduce un modo migliore per fornire aggiornamenti delle app ai dispositivi. Quando gli sviluppatori pubblicano un aggiornamento, ora Google Play carica sui dispositivi solo i bit che sono stati modificati, anziché l'intero APK. In questo modo, nella maggior parte dei casi, gli aggiornamenti sono molto più leggeri, quindi il download è più veloce, la batteria del dispositivo viene risparmiata e l'utilizzo della larghezza di banda viene ridotto sul piano dati mobile degli utenti. In media, un aggiornamento di app intelligenti ha 1/3 delle dimensioni di un aggiornamento APK completo.

Google Play Services

Google Play Services aiuta gli sviluppatori a integrare i servizi Google, come l'autenticazione, nelle loro app distribuite tramite Google Play.

Google Play Services viene eseguito automaticamente sui dispositivi degli utenti finali da Google Play, quindi è sufficiente una libreria client thin nelle tue app.

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

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