Android 4.3
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 all'indirizzo www.android.com.
Più veloce, fluido e reattivo
Android 4.3 si basa sui miglioramenti delle prestazioni già inclusi in Jelly Bean: tempistiche vsync, triplo buffering, latenza touch ridotta, incremento dell'input della CPU e rendering 2D con accelerazione hardware, oltre ad aggiungere nuove ottimizzazioni che rendono Android ancora più veloce.
Per migliorare le prestazioni grafiche, il renderer 2D con accelerazione hardware ora ottimizza il flusso di comandi di disegno, trasformandolo in un formato GPU più efficiente mediante la riorganizzazione e l'unione delle operazioni di disegno. Per l'elaborazione multithread, il renderer ora può utilizzare anche il multi-threading 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 vengono ora visualizzati a una qualità superiore 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 per il ridimensionamento del testo e rendering delle ombre più veloce.
L'allocazione del buffer delle finestre migliorata comporta un'allocazione più rapida del buffer delle immagini 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 della trama 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 le migliori funzionalità grafiche 2D e 3D sui dispositivi supportati. Puoi sfruttare OpenGL ES 3.0 e le relative estensioni EGL utilizzando API framework o associazioni di API native tramite il Native Development Kit (NDK) Android.
Le nuove funzionalità principali offerte 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 di numeri interi e in virgola mobile a 32 bit, rendering avanzato delle texture, dimensioni delle texture e formati buffer di rendering standardizzati.
Puoi utilizzare le API OpenGL ES 3.0 per creare schede grafiche estremamente complesse e ad alta efficienza eseguite su una vasta gamma di dispositivi Android compatibili e puoi supportare un unico formato di compressione delle texture standard su questi dispositivi.
OpenGL ES 3.0 è una funzionalità facoltativa che dipende dall'hardware grafico sottostante. L'assistenza è già disponibile sui 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.
![](https://developer.android.google.cn/static/images/jb-btle.png?authuser=7&hl=it)
Android 4.3 offre una singola 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 sui 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 controllare i 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 registrare un ascoltatore per ricevere notifiche ogni volta che queste caratteristiche cambiano.
Puoi implementare l'assistenza 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 potrai supportare le interazioni con vari dispositivi come tag di prossimità, smartwatch, misuratori del fitness, controller di gioco, telecomandi, dispositivi per la salute e altro ancora.
Il supporto per Bluetooth Smart Ready è già disponibile su dispositivi Nexus 7 (2013) e Nexus 4 e sarà supportato nei prossimi mesi in un numero crescente di dispositivi compatibili con Android.
Profilo AVRCP 1.3
Android 4.3 aggiunge il supporto integrato per Bluetooth AVRCP 1.3, in modo che le app possano supportare interazioni più complete con i dispositivi multimediali per lo streaming da remoto. App come i media player possono sfruttare AVRCP 1.3 tramite le API client per il controllo remoto introdotte in Android 4.0. Oltre a esporre i 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 immediatamente sui dispositivi Nexus e su altri dispositivi compatibili con Android che offrono funzionalità A2DP/AVRCP.
Supporto per i profili con limitazioni
![Configurare un profilo con limitazioni](https://developer.android.google.cn/static/images/jb-profiles-create-n713.png?authuser=7&hl=it)
Il proprietario di un tablet può impostare uno o più profili con limitazioni nelle Impostazioni e gestirli in modo indipendente.
![Impostazione di restrizioni in un profilo](https://developer.android.google.cn/static/images/jb-profiles-restrictions-n713.png?authuser=7&hl=it)
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 loro 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 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. 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 attivare 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ò rivedere e gestire queste app dalle impostazioni di configurazione del profilo.
Per gli sviluppatori, i profili con limitazioni offrono un nuovo modo per offrire agli utenti più valore e controllo. Puoi implementare limitazioni delle app, ovvero controlli delle funzionalità o dei contenuti supportati dalla tua app, e pubblicizzarle per i proprietari di tablet nelle impostazioni di configurazione del profilo.
Puoi aggiungere limitazioni delle app direttamente alle impostazioni di configurazione del profilo utilizzando i tipi booleani, selezionati e a selezione multipla. Se vuoi maggiore flessibilità, puoi persino lanciare la tua UI dalle impostazioni di configurazione del profilo, in modo da offrire qualsiasi tipo di limitazione.
Quando l'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 quindi 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.
Posizione ottimizzata e funzionalità dei sensori
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 durante il movimento del dispositivo.
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 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 nella piattaforma Android 4.3.
I nuovi tipi di sensori consentono alle app di gestire meglio le letture dei sensori. Un vettore di rotazione dei giochi consente agli sviluppatori di percepire la rotazione del dispositivo senza doversi preoccupare delle interferenze magnetiche. I sensori di 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 prossima 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 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 Media DRM fornisce un set integrato di servizi per la gestione delle licenze e del provisioning, l'accesso ai codec di basso livello e la decodifica di dati multimediali criptati. Una nuova API MediaExtractor ti consente di ottenere i metadati PSSH per i media DASH. Le app che utilizzano il framework DRM multimediale gestiscono la comunicazione di rete con un server di licenze e lo streaming di dati criptati provenienti da una libreria di contenuti.
Codificatore VP8
Android 4.3 introduce il supporto integrato per la codifica VP8, accessibile dal framework e dalle 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 degli errori, ricostruzione e filtri loop. L'API della piattaforma introduce il supporto del codificatore VP8 in una vasta gamma di formati, per consentirti di trarre il formato migliore per i tuoi contenuti.
La codifica VP8 è disponibile nel software su tutti i dispositivi compatibili con Android 4.3. Per ottenere le massime prestazioni, la piattaforma supporta anche la codifica VP8 con accelerazione hardware sui dispositivi idonei.
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 piattaforma OpenGL ES all'encoder, anziché doverlo copiare da un buffer all'altro.
Muxer di contenuti multimediali
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 multiplexare un singolo stream audio MPEG-4 e 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.
L'avanzamento della riproduzione e lo scrubbing nei client di controllo remoto
A partire da Android 4.0, i lettori multimediali e applicazioni simili possono 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 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 una funzionalità molto usata di Android perché consentono agli utenti di visualizzare informazioni e aggiornamenti di tutto il sistema, il tutto in un'unica posizione. Ora in Android 4.3 le app possono osservare il flusso di notifiche con l'autorizzazione dell'utente e visualizzare le notifiche come preferiscono, ad esempio inviandole ai dispositivi nelle vicinanze connessi tramite Bluetooth.
Puoi accedere alle notifiche tramite le nuove API che ti consentono di registrare un servizio listener di notifiche e, con l'autorizzazione dell'utente, di ricevere le notifiche man mano che vengono visualizzate nella barra di stato. Le notifiche ti vengono inviate per intero, con tutti i dettagli sull'app di origine, l'ora di pubblicazione, 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 nel modo che 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 avviare 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 per le notifiche.
Gli utenti mantengono il controllo su quali app possono ricevere notifiche. In qualsiasi momento può cercare 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 portare l'utente direttamente alle Impostazioni e attivare il servizio listener dopo l'installazione.
Visualizza overlay
Ora puoi creare overlay trasparenti sopra a Viste e ViewGroups per visualizzare una gerarchia di View temporanea o effetti di animazione temporanei senza alterare la gerarchia del layout sottostante. Gli overlay sono particolarmente utili quando vuoi creare animazioni, ad esempio per scorrere una visualizzazione all'esterno del contenitore o trascinare 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 limiti ottici, anziché ai limiti dei clip. I limiti dei clip rappresentano il confine esterno effettivo di un widget, mentre i nuovi limiti ottici descrivono il punto in cui appare il widget, all'interno dei limiti del clip. Puoi usare la modalità di layout dei 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 ingresso e uscita utilizzati in una finestra quando il dispositivo viene ruotato. Puoi impostare le proprietà delle finestre in modo da attivare la rotazione delle finestre jump-cut, cross-fade o 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 garantire che vengano visualizzate con l'orientamento corretto quando il dispositivo viene capovolto. Inoltre, le app possono utilizzare una nuova modalità per bloccare lo schermo nell'orientamento attuale. Questo è utile per le app che utilizzano la fotocamera che vogliono disattivare la rotazione durante le riprese di video.
Intenzione di gestire le 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 tuo sistema di messaggistica. L'intent include il destinatario (chiamante) e il messaggio stesso.
Supporto per utenti internazionali
![](https://developer.android.google.cn/static/images/jb-rtl-arabic-n4.png?authuser=7&hl=it)
![](https://developer.android.google.cn/static/images/jb-rtl-hebrew-n4.png?authuser=7&hl=it)
Un maggior numero di parti di Android 4.3 è ottimizzato per le lingue RTL.
Miglioramenti a RTL
Android 4.3 include miglioramenti delle prestazioni RTL e un più ampio supporto RTL nei widget dell'interfaccia utente di tutti i framework, tra cui ProgressBar/Spinner ed espandibileListView. Ulteriori informazioni di debug sono visibili tramite lo strumento uiautomatorviewer
. Inoltre, altri componenti dell'interfaccia utente di sistema
sono ora compatibili con RTL, come notifiche, barra di navigazione e barra delle azioni.
Per offrire una migliore esperienza a livello di sistema negli script RTL, altre app di sistema predefinite supportano ora i layout RTL, tra cui Avvio app, Impostazioni rapide, Telefono, Persone, ConfigWizard, Orologio, Download e altro ancora.
Utilità per la localizzazione
![](https://developer.android.google.cn/static/images/jb-pseudo-locale-zz.png?authuser=7&hl=it)
Le pseudo-impostazioni internazionali semplificano i 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 Unicode UTS per una lingua specificata. È un modo comodo per offrire agli utenti un'esperienza più localizzata.
Per aiutarti a testare più facilmente la tua app in altre lingue, Android 4.3 introduce pseudo-locals 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 un test con una pseudo-lingua per l'inglese locale, che ti consente di vedere come funziona la tua UI con gli accenti e i caratteri degli script 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 sui 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 delle 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, che potranno visualizzare e accettare le funzionalità prima del lancio.
Basato sul framework per l'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 introspezione dei contenuti dello schermo. Tramite il framework di automazione della UI, puoi eseguire operazioni di base, impostare la rotazione dello schermo, generare eventi di input, acquisire screenshot e altro ancora. È un modo efficace per automatizzare i test in scenari utente realistici, incluse azioni o sequenze su più app.
Imprese 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 Enterprise. Gli sviluppatori possono utilizzare nuove API per configurare le credenziali Extensible Authentication Protocol (EAP) ed Encapsulated EAP (Fase 2) per i metodi di autenticazione utilizzati nell'azienda. Le app autorizzate ad accedere al Wi-Fi e a modificarle possono configurare le credenziali di autenticazione per vari metodi di autenticazione EAP e di fase 2.
Sandbox di Android rafforzata con SELinux
Android ora utilizza SELinux, un sistema di controllo dell'accesso obbligatorio (MAC) nel kernel Linux per estendere la sandbox delle applicazioni basata su UID. In questo modo, protegge il sistema operativo da potenziali vulnerabilità della sicurezza.
Miglioramenti di KeyChain
L'API KeyChain ora fornisce un metodo che consente alle applicazioni di confermare che le chiavi a livello di sistema siano associate a una radice di attendibilità hardware per il dispositivo. Ciò consente di creare o archiviare chiavi private che non possono essere esportate dal dispositivo, anche in caso di compromissione della directory principale o del kernel.
Provider archivio chiavi Android
Android 4.3 introduce un provider di archivi 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 delle 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 zigote gestiti, impedendo alle app per Android di eseguire i programmi setuid
. Ciò riduce la superficie di attacco root e la probabilità
di potenziali vulnerabilità di sicurezza.
Nuovi modi per analizzare il rendimento
![](https://developer.android.google.cn/static/images/jb-systrace.png?authuser=7&hl=it)
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 consente di accedere a più tipi di informazioni per profilare le prestazioni della tua app. Ora puoi raccogliere dati di traccia da moduli hardware, funzioni kernel, VM Dalvik, tra cui garbage collection, caricamento delle risorse e altro ancora.
Android 4.3 include anche le nuove API Trace che puoi utilizzare nelle tue app per contrassegnare sezioni specifiche di codice da tracciare mediante gli eventi begin/end di Systrace. Quando vengono eseguite le sezioni di codice contrassegnate, il sistema scrive gli eventi di inizio/fine nel log di traccia. L'impatto sulle prestazioni della tua app è minimo, pertanto i tempi registrati 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 analizzarli nel contesto di altri dati di traccia dello spazio utente e del kernel. Insieme ai tag Systrace esistenti, le sezioni personalizzate delle app possono offrirti nuovi modi per comprendere le prestazioni e il comportamento delle tue app.
![](https://developer.android.google.cn/static/images/jb-gpu-profile-clk-n4.png?authuser=7&hl=it)
![](https://developer.android.google.cn/static/images/jb-gpu-profile-cal-n4.png?authuser=7&hl=it)
Profilazione della GPU sullo schermo in Android 4.3.
Profilazione GPU sullo schermo
Android 4.3 aggiunge nuove opzioni per sviluppatori per aiutarvi ad analizzare le prestazioni dell'app e a individuare i problemi di rendering su qualsiasi dispositivo o emulatore.
Ora l'opzione Profilo GPU rendering consente di visualizzare la frequenza fotogrammi effettiva della tua app sullo schermo mentre l'app è 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 di 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, comprese 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 della tua 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 con 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 in 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 avvisa
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 di file://
, pertanto quando condividi file tra app è necessario usare un URI content://
(con l'autorizzazione appropriata). Questo nuovo criterio consente di individuare e risolvere
questi casi. Se stai cercando un modo comodo per archiviare ed esporre i file ad altre app, prova a utilizzare il fornitore di contenuti FileProvider
disponibile nella Raccolta di supporto.
Android 4.2
![Android 4.2 su smartphone e tablet](https://developer.android.google.cn/static/images/jb-device-2.png?authuser=7&hl=it)
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 funzioni 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 all'indirizzo www.android.com.
Più veloce, fluido e reattivo
Android 4.2 si basa sui miglioramenti delle prestazioni già inclusi in Jelly Bean, tra cui tempistica vsync, triplo buffering, latenza tocco ridotta e incremento dell'input della CPU, e aggiunge nuove ottimizzazioni che rendono Android ancora più veloce.
I miglioramenti apportati al renderer 2D con accelerazione hardware rendono più fluide e veloci le animazioni comuni, come lo scorrimento e lo scorrimento. In particolare, il disegno è ottimizzato per livelli, ritagli e determinate forme (rettangoli arrotondati, cerchi e ovali).
Una serie di ottimizzazioni del rendering di WebView rendono lo scorrimento delle pagine web più fluido e privo di tremolio e ritardi.
Renderscript Compute di Android è la prima piattaforma di calcolo portata per essere eseguita direttamente su una GPU per dispositivi mobili. Laddove possibile, sfrutta automaticamente le risorse di computing con GPU, migliorando drasticamente le prestazioni dell'elaborazione delle immagini e della grafica. Qualsiasi app che utilizza Renderscript su un dispositivo supportato può trarre vantaggio immediatamente da questa integrazione della GPU senza ricompilare.
UI raffinata e aggiornata
Android 4.2 ottimizza l'esperienza utente di Jelly Bean e porta su tutti i tablet i pattern UI familiari di Android, come la barra di stato, la barra di sistema e la finestra delle notifiche.
Per tutte le dimensioni degli schermi è ora disponibile la barra di stato in alto, con accesso pull-down alle notifiche e un nuovo menu Impostazioni rapide. La nota barra di sistema è visualizzata in basso, con pulsanti facilmente accessibili da entrambe le mani. Il vassoio 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 ha accesso conveniente a uno spazio utente dedicato. Gli utenti possono passare ai loro spazi con un solo tocco dalla schermata di blocco.
Su un dispositivo multiutente, Android offre a ogni utente un ambiente separato, tra cui l'archiviazione emulata su scheda SD specifica dell'utente. Gli utenti hanno anche 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 essere eseguite normalmente in un ambiente multiutente. Inoltre, non è necessario apportare modifiche agli APK esistenti o pubblicati. Il sistema gestisce la tua app in ogni spazio utente proprio come fa in un ambiente con un solo utente.
Nuovi modi per coinvolgere gli utenti
![Widget Calendario della schermata di blocco](https://developer.android.google.cn/static/images/jb-lock-calendar.png?authuser=7&hl=it)
Puoi estendere i widget di app in modo che vengano eseguiti sulla schermata di blocco per avere accesso immediato ai tuoi contenuti.
Widget schermata di blocco
In Android 4.2, gli utenti possono inserire widget di app direttamente nelle schermate di blocco per avere accesso immediato ai contenuti delle 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 ciascun widget nel proprio riquadro, consentendo agli utenti di scorrere a sinistra e a destra per visualizzare diversi riquadri e i relativi widget.
Come tutti i widget delle app, anche i widget 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 con controlli per riprodurre musica, oppure possono consentire agli utenti di passare direttamente a un'attività nell'app dopo aver eseguito lo sblocco secondo necessità.
Per gli sviluppatori, i widget sulla schermata di blocco offrono un nuovo modo fantastico per coinvolgere gli utenti. Ti consentono di mostrare i tuoi contenuti agli utenti in una posizione che vedranno spesso e di avere più opportunità per attirarli direttamente nella tua app.
Puoi sfruttare questa nuova funzionalità creando un nuovo widget dell'app o estendendo un widget esistente della schermata Home. Se l'app include già widget nella 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 di blocco schermo intero quando disponibile e ridimensionarlo quando necessario su schermi più piccoli. Puoi anche aggiungere ai widget funzionalità che potrebbero essere particolarmente utili o utili 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 remoto fornito da un'app installata, come salvaschermo del dispositivo. Un utente può attivare Daydream dall'app Impostazioni e poi scegliere il sogno a occhi aperti da visualizzare.
Daydream unisce le migliori funzionalità degli sfondi animati e dei widget della schermata Home, ma sono più potenti. Ti permettono 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 alla tua app con un solo tocco.
Poiché daydream può avviarsi automaticamente quando un dispositivo è in carica o agganciato alla base, offre anche 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à Attrai", il tutto senza richiedere hardware speciale.
![Modalità salvaschermo Daydream](https://developer.android.google.cn/static/images/jb-dream-1.png?authuser=7&hl=it)
Daydream consente di creare potenti salvaschermi interattivi che visualizzano qualsiasi tipo di contenuto.
Daydreams è simile ad Attività e può fare tutto ciò che è in grado di fare, dal rendering di una gerarchia di UI (senza utilizzare RemoteView) al disegno diretto con Canvas, OpenGL, SurfaceTexture e altro ancora. Possono riprodurre video e audio e accettare persino l'interazione diretta dell'utente. Tuttavia, i daydream non sono attività, quindi non influiscono sullo stack iniziale, non vengono visualizzati in Recenti e non possono essere lanciati 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ù daydream nella tua app e offrire impostazioni di visualizzazione e contenuti distinte per ognuna.
Supporto per display esterni
Android 4.2 introduce il supporto della piattaforma per display esterni che va ben oltre il mirroring: le app ora possono avere come target contenuti unici per uno o più display collegati a un dispositivo Android. Le app possono basarsi su questo approccio per offrire agli utenti nuovi tipi di esperienza di interazione e intrattenimento.
Gestione display
Le app interagiscono con i display tramite un nuovo servizio di sistema Display Manager. La tua app può elencare i display e controllarne le funzionalità, tra cui dimensioni, densità, nome visualizzato, ID, supporto per i video sicuri e altro ancora. La tua app può anche ricevere callback quando vengono aggiunti o rimossi dei display o quando le loro funzionalità cambiano, per gestire meglio i tuoi contenuti sui display esterni.
Finestra della presentazione
Per semplificare la visualizzazione di contenuti su uno schermo esterno, il framework fornisce un nuovo oggetto dell'interfaccia utente chiamato Presentazione, un tipo di finestra di dialogo che rappresenta una finestra per i contenuti dell'app su uno specifico display esterno. L'app offre al display l'utilizzo, un tema per la finestra e qualsiasi contenuto esclusivo da mostrare. La Presentazione gestisce l'aumento delle risorse e il rendering dei contenuti in base alle caratteristiche del display target.
![](https://developer.android.google.cn/static/images/external-display.png?authuser=7&hl=it)
Puoi assumere il controllo completo di due o più display indipendenti usando Presentazione.
Una presentazione offre alla tua app il controllo totale della finestra di visualizzazione remota e dei suoi contenuti e ti consente di gestirla in base agli eventi di input dell'utente, come pressioni di tasti, gesti, eventi di movimento e altro ancora. Puoi usare tutti i normali strumenti per creare un'interfaccia utente ed eseguire il rendering di contenuti nella presentazione, dalla creazione di una gerarchia di visualizzazione arbitraria all'utilizzo di SurfaceView o SurfaceTexture per disegnare direttamente nella finestra per contenuti in streaming o anteprime della videocamera.
Selezione visualizzazione preferita
Quando sono disponibili più display esterni, puoi creare tutte le presentazioni che vuoi, ognuna delle quali mostra contenuti univoci su un display specifico. In molti casi, potresti voler mostrare i tuoi contenuti su un unico display esterno, ma sempre su quello migliore per i contenuti della presentazione. Per farlo, 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 a Gestione 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. L'app può mostrare contenuti per impostazione predefinita nell'attività principale finché non viene collegato un display di presentazione preferito, dopodiché l'app può passare automaticamente ai contenuti della presentazione sul display preferito. Le app possono anche utilizzare MediaRouteActionProvider e MediaRouteButton del router multimediale per offrire una UI standard per la selezione del display.
Contenuti protetti
Per le app che gestiscono contenuti protetti o criptati, l'API display ora registra le funzionalità video sicure dei display collegati. L'app esegue query su un display per scoprire se offre un output video sicuro o buffer grafici protetti, quindi sceglie lo stream o la decodifica di contenuti appropriati per rendere i contenuti visibili. 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 in un output di visualizzazione non protetto, anche durante il mirroring.
Visualizzazione wireless
A partire da Android 4.2, gli utenti dei dispositivi supportati possono connettersi a un display esterno tramite Wi-Fi utilizzando un display Wi-Fi (una soluzione di visualizzazione wireless peer-to-peer conforme al programma di certificazione MiracastTM). Quando è collegato 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 altri display esterni senza bisogno di lavoro aggiuntivo. Il sistema gestisce la connessione di rete e trasmette in streaming i contenuti della presentazione o di altri contenuti dell'app al display wireless secondo necessità.
Supporto RTL nativo
![Mirroring layout RTL](https://developer.android.google.cn/static/images/jb-rtl.png?authuser=7&hl=it)
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 nativo per RTL, puoi offrire la stessa ottima esperienza con le app a tutti gli utenti, indipendentemente dal fatto che la loro lingua utilizzi uno script con lettura da destra a sinistra o uno con lettura da sinistra a destra.
Quando l'utente cambia la lingua di sistema impostandola su 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 di visualizzazione, oltre al mirroring bidi degli elementi di testo per la lettura e l'input dei caratteri.
L'app può sfruttare il Mirroring del layout RTL nell'app con il minimo sforzo. Se vuoi che l'app venga sottoposta a mirroring, devi solo dichiarare un nuovo attributo nel file manifest dell'app e cambiare 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'UI 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 della vista. 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 e fine, la direzione del layout, la direzione 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 carattere: Nanum (나눔글꼴) Gothic, un carattere Unicode progettato appositamente per la scrittura in lingua coreana.
- Supporto migliorato per il testo verticale giapponese visualizzato nei componenti WebView.
- Creazione e posizionamento dei caratteri migliorati per i caratteri predefiniti di lingua indiana, tailandese, arabo 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 strumento di gestione dei frammenti ti consente di inserire altri frammenti come nodi secondari nella gerarchia delle visualizzazioni.
Puoi utilizzare i frammenti nidificati in diversi modi, ma sono particolarmente utili per implementare componenti UI dinamici e riutilizzabili all'interno di un componente dell'interfaccia utente dinamico e riutilizzabile. Ad esempio, se usi ViewPager per creare frammenti che scorrono verso sinistra e destra, ora puoi inserire frammenti in ogni frammento del pager della vista.
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 aiuta i servizi di accessibilità a distinguere tra esplorazione al tocco e gesti di accessibilità quando si trovano in modalità di esplorazione al tocco. Quando un utente tocca lo schermo, il sistema informa il servizio che è iniziata un'interazione tramite tocco generica. Quindi, monitora la velocità dell'interazione touch e determina se si tratta di un'esplorazione al tocco (lenta) o 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. Inoltre, in Android 4.2 è stato aggiunto 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 il suono dell'otturatore della fotocamera può essere disattivato. Le app possono quindi consentire all'utente di disattivare l'audio o scegliere un suono alternativo al posto del suono standard dell'otturatore, opzione consigliata.
Calcolo di Renderscript
In Android 4.2, Renderscript Compute introduce nuove funzionalità di script, nuove ottimizzazioni e 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 una vasta 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 con 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 dell'immagine e calcolo con accelerazione hardware, come quelle che potrebbero essere scritte per gli ombreggiatori di frammenti OpenGL ES. Grazie a una serie di vincoli flessibili sull'hardware, le operazioni vengono ottimizzate e accelerate su più tipi di chipset di dispositivi. Qualsiasi app che ha come target l'API di livello 17 o superiore può utilizzare Filtroscript.
Funzionalità intrinseche per lo script
In Android 4.2, Renderscript aggiunge il supporto per un insieme di funzioni intrinseche degli script preimplementate, con primitive di filtro accelerate implementate per ridurre la quantità di codice necessaria da scrivere e per garantire che la tua app ottenga il massimo rendimento possibile in termini di prestazioni.
Le funzionalità intrinseche sono disponibili per combinazioni, sfocatura, matrice di colori, convolve 3 x 3 e 5 x 5, 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 eseguirli 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 potrebbe fare se gli script fossero stati eseguiti singolarmente.
![Grafico delle ottimizzazioni di renderingscipt](https://developer.android.google.cn/static/images/jb-rs-chart-versions.png?authuser=7&hl=it)
I benchmark per l'elaborazione delle immagini Renderscript funzionano su diverse versioni della piattaforma Android (Android 4.0, 4.1 e 4.2) in CPU solo su un dispositivo Galaxy Nexus.
![](https://developer.android.google.cn/static/images/jb-rs-chart-gpu.png?authuser=7&hl=it)
I benchmark di elaborazione delle immagini Renderscript confrontano le operazioni eseguite con GPU e CPU con quelle eseguite solo con CPU sullo stesso dispositivo Nexus 10.
Se hai un grafo diretto aciclico delle operazioni Renderscript da eseguire, puoi utilizzare una classe del 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 le migliori prestazioni.
Miglioramenti costanti all'ottimizzazione
Quando utilizzi Renderscript per le operazioni di calcolo, le app beneficiano di miglioramenti continui delle prestazioni e dell'ottimizzazione nel motore Renderscript stesso, senza alcun impatto sul codice dell'app o necessità di ricompilazione.
Con il miglioramento dell'ottimizzazione, 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 derivante dai continui miglioramenti dell'ottimizzazione Renderscript nelle versioni successive della piattaforma Android.
Calcolo GPU
Renderscript Compute è la prima piattaforma di calcolo portabile per l'esecuzione diretta sulla GPU di un dispositivo mobile. Ora, ogni volta che è possibile, sfrutta automaticamente le risorse di calcolo GPU per migliorare le prestazioni. Grazie all'integrazione della GPU, anche i calcoli più complessi dell'elaborazione di grafica o di 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 gli sviluppatori
Il sistema Android 4.2 include una serie di nuove opzioni per sviluppatori che semplificano la creazione di app dall'aspetto accattivante e con buone prestazioni. 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 gli sviluppatori sono nascoste per impostazione predefinita, contribuendo a creare un'esperienza migliore per gli utenti. Puoi rivelare le opzioni sviluppatore in qualsiasi momento toccando 7 volte su Impostazioni > Informazioni sul telefono > Numero build su qualsiasi dispositivo Android compatibile.
![](https://developer.android.google.cn/static/images/jb-dev-options-device.png?authuser=7&hl=it)
Le nuove opzioni per sviluppatori ti offrono più modi per profilare ed eseguire il debug su un dispositivo.
Le nuove opzioni per gli sviluppatori di Android 4.2 includono:
- Apri report 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 il sideload delle app tramite USB, continuando a controllare le app da altre fonti, come il browser. Questo può accelerare il processo di sviluppo mantenendo attiva la funzionalità di sicurezza.
- Mostra aggiornamenti livelli hardware: lampeggia in verde i livelli hardware quando vengono aggiornati.
- Mostra overdraw GPU: evidenzia le aree di overdraw della GPU.
- Forza MSAA 4 volte: attiva MSAA 4 volte nelle app Open GL ES 2.0.
- Simula display secondari: crea una o più finestre overlay non sicure sulla schermata corrente da utilizzare come display remoto simulato. Puoi controllare le dimensioni e la densità del display simulato.
- Attiva tracce OpenGL: consente di tenere traccia dell'esecuzione OpenGL utilizzando Logcat, Systrace o callback su glGetError.
Nuove tecnologie per piattaforme
Android 4.2 include una varietà di tecnologie di piattaforma nuove e avanzate per supportare casi d'uso di comunicazione innovativi su un'ampia 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 decine di miglioramenti della sicurezza per proteggere gli utenti. Ecco alcuni dei miglioramenti apportati ad Android 4.2:
- Verifica delle applicazioni: gli utenti possono scegliere di attivare la funzionalità "Verifica app" e fare in modo che le applicazioni vengano filtrate da uno strumento di verifica delle applicazioni 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ò bloccare l'installazione.
- Maggiore controllo degli SMS premium: Android invierà una notifica se un'applicazione tenta di inviare SMS a un codice breve che utilizza servizi premium che potrebbero causare costi aggiuntivi. L'utente può scegliere se consentire all'applicazione di inviare il messaggio o se 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. Ciò impedisce alle applicazioni di inviare dati su altre reti.
- Blocco dei certificati: l'implementazione SSL libcore ora supporta il blocco dei certificati. I domini bloccati riceveranno un errore di convalida del certificato se il certificato non è concatenato a un set di certificati previsti. Ciò protegge da possibili violazioni delle autorità di certificazione.
- Visualizzazione migliorata delle autorizzazioni Android: le autorizzazioni sono state organizzate in gruppi più facilmente comprensibili da parte degli utenti. Durante la revisione delle autorizzazioni, l'utente può fare clic sull'autorizzazione per visualizzare informazioni più dettagliate sull'autorizzazione.
- hardening delle installazioni: 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 prevenire gli attacchi correlati ai link simboli.
- FORTIFY_SOURCE: ora Android implementa FORTIFY_SOURCE. Viene utilizzato dalle librerie di sistema e dalle applicazioni per prevenire il danneggiamento della memoria.
- Configurazione predefinita di ContentProvider: per le applicazioni il cui livello API target è 17, il valore "export" sarà impostato 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 SSLSocket per TLSv1.1 e TLSv1.2 utilizzando 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 di 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 della riproduzione audio a bassa latenza, a partire dai miglioramenti apportati nella release di Android 4.1 per la latenza dell'output audio utilizzando le API OpenSLES, Soundpool e generatore di suoni. Questi miglioramenti dipendono dal supporto hardware: i dispositivi che offrono queste funzionalità audio a bassa latenza possono pubblicizzare il loro supporto per le app tramite una costante di funzionalità hardware. Vengono fornite nuove API AudioManager per eseguire query sulla frequenza di campionamento audio nativo e sulla dimensione del buffer per l'utilizzo sui dispositivi che utilizzano questa funzionalità.
Nuova interfaccia hardware della videocamera
Android 4.2 introduce una nuova implementazione dello stack delle fotocamere. Il sottosistema della 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 del controller NFC
Android 4.2 introduce il supporto per i controller basati sullo standard NCI del Forum NFC. NCI offre un protocollo di comunicazione standard tra un controller NFC (NFCC) e un host del dispositivo, mentre 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 x86 JIT 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 di SSLSocket per TLSv1.1 e TLSv1.2 tramite OpenSSL 1.0.1
- Nuovo supporto intrinseco per i metodi StrictMath ass, min, max e spotrt
- BouncyCastle aggiornato alla versione 1.47
- zlib aggiornato alla versione 1.27
- dlmalloc aggiornato alla versione 2.8.6
Android 4.1
![](https://developer.android.google.cn/static/images/jb-android-4.1.png?authuser=7&hl=it)
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 in tutta la 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 Android 4.1 per una spiegazione dettagliata delle 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 minore latenza al tocco in un'interfaccia utente intuitiva e senza sforzo.
Per garantire una frequenza fotogrammi coerente, Android 4.1 estende il tempo vsync a tutti i disegni e le animazioni eseguite dal framework Android. Tutto funziona di pari passo rispetto all'heartbeat vsync di 16 millisecondi, ovvero rendering delle applicazioni, eventi touch, composizione dello schermo e aggiornamento del display, così i frame non vanno avanti o indietro.
Android 4.1 aggiunge anche il triplo buffering nella pipeline grafica, per un rendering più coerente che rende tutto più fluido, dallo scorrimento al paging e alle animazioni.
Android 4.1 riduce la latenza del tocco non solo sincronizzando il tocco con la sincronizzazione vsync, ma anche anticipando dove si troverà il dito al momento dell'aggiornamento dello schermo. Ciò si traduce in una risposta al tocco più reattiva e uniforme. Inoltre, dopo periodi di inattività, Android applica un incremento dell'input della CPU all'evento di tocco successivo, per garantire l'assenza di latenza.
Gli strumenti possono aiutarti a ottenere le migliori prestazioni 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 da un gruppo di grafici di serie temporali impilati verticalmente per aiutare a isolare le interruzioni del rendering e altri problemi. Lo strumento è ora disponibile nell'SDK Android (Strumenti R20 o versioni successive)
![](https://developer.android.google.cn/static/images/jb-accessibility-focus-250.png?authuser=7&hl=it)
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 ed esplorazione al tocco sono stati riprogettati in modo da sfruttare l'accessibilità al fine di facilitarne l'uso 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 loro codice. Le app che usano viste personalizzate possono usare nuove API dei nodi di accessibilità per indicare le parti della vista che interessano i servizi di accessibilità.
Supporto per utenti internazionali
![](https://developer.android.google.cn/static/images/jb-r2l.png?authuser=7&hl=it)
Supporto di testo bidirezionale e supporto di 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 nuove lingue arabe ed ebraiche e caratteri associati.
Altri tipi di supporto per nuove lingue includono:
- Altre lingue indiane: kannada, telugu e malayalam
- I nuovi caratteri emoji della versione Unicode 6.0
- Supporto migliorato dei glifi per gli utenti giapponesi (viene eseguita la visualizzazione delle 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, incluso il testo Ruby e gli altri glifi di testo verticale
- 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 tasti 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, 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 dei tasti nel sistema. L'APK includerà le risorse di layout di tastiera, in base al formato standard della mappa dei tasti di 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
![](https://developer.android.google.cn/static/images/jb-notif-ex1.png?authuser=7&hl=it)
Gli sviluppatori possono creare stili di notifica personalizzati come quelli mostrati negli esempi sopra, 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 nel framework delle notifiche di Android. Ora le app possono mostrare agli utenti notifiche più ampie e complete, che possono essere espanse e compresse con un pizzico o un gesto di scorrimento. Le notifiche supportano nuovi tipi di contenuti, tra cui le foto, hanno priorità configurabile e possono anche includere più azioni.
Grazie a 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 arrivo: 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 stili di notifica personalizzati utilizzando qualsiasi visualizzazione 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 visitare l'app.
Grazie alle notifiche espandibili, le app possono fornire 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, se vuoi, disattivare ulteriori notifiche dall'app.
![](https://developer.android.google.cn/static/images/jb-appwidgets.png?authuser=7&hl=it)
I app widget 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 app migliorati che possono ridimensionare automaticamente i contenuti in base a dove l'utente li rilascia nella schermata Home, alle dimensioni di espansione dell'app e alla quantità di spazio disponibile sulla schermata Home. Le nuove API App Widget ti consentono di ottimizzare i contenuti dei widget dell'app quando cambiano le dimensioni dei widget.
Quando un widget cambia la 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 completa o funzionalità o opzioni aggiuntive. Gli sviluppatori possono comunque mantenere il controllo sulle dimensioni massime e minime e possono aggiornare le altre opzioni dei widget quando necessario.
Puoi anche fornire layout orizzontali e verticali separati per i widget, che il sistema aumenta in modo appropriato 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_APP WIDGET_BIND).
Navigazione tra le attività semplificata
Android 4.1 semplifica la gestione della navigazione "Su" disponibile per gli utenti dall'interno delle app e contribuisce a garantire un'esperienza coerente per gli utenti.
Puoi definire la navigazione verso l'alto prevista per singoli componenti di attività dell'interfaccia utente aggiungendo un nuovo attributo XML nel file manifest dell'app. In fase di esecuzione, all'avvio delle attività, il sistema estrae l'albero di navigazione in alto dal file manifest e crea automaticamente la navigazione Ordine in 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 a ritroso.
Animazioni semplici per l'avvio dell'attività
Puoi utilizzare una nuova classe di supporto, 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à oppure richiedere nuove animazioni con zoom che inizino da un rettangolo specificato sullo schermo e che, facoltativamente, includano una bitmap in miniatura.
Transizioni alle modalità Schermo intero e Luce spenta
I nuovi flag dell'interfaccia utente di sistema in View ti consentono di passare in modo pulito da una normale interfaccia utente dell'applicazione (con barra delle azioni, barra di navigazione e barra di sistema visibili), alla "modalità illuminata" (con barra di stato e barra delle azioni nascoste e barra di navigazione attenuate) 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 visualizzazioni remote e gestire gli allineamenti delle visualizzazioni secondarie con una gerarchia di UI più bassa. ViewStub è una visualizzazione invisibile di dimensioni zero che può essere utilizzata per incrementare lentamente 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 ad alta risoluzione
Con Android 4.1 puoi memorizzare foto dei contatti di dimensioni fino a 720 x 720, rendendo i contatti ancora più ricchi e personali. Le app possono archiviare e recuperare le foto dei contatti di quelle dimensioni o utilizzare qualsiasi altra dimensione necessaria. Le dimensioni massime delle foto supportate su dispositivi specifici possono variare, pertanto le app dovrebbero eseguire una query al fornitore di contatti integrato in fase di esecuzione per ottenere le dimensioni massime del dispositivo corrente.
Nuovi tipi di input e funzionalità
Informazioni sui dispositivi aggiunti e rimossi
Le app possono registrarsi per ricevere notifiche 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 relativa al collegamento di una nuova tastiera o a un nuovo joystick, a indicare la presenza di un nuovo giocatore.
Interroga le 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 conoscere le funzionalità di ciascuno.
Controlla la 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 fluida e stabile. Per vantaggio anche per 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 nel thread dell'interfaccia utente e fornire una base di tempo stabile per la sincronizzazione.
Le app possono sfruttare senza costi il tempo di vsync, attraverso il framework dell'animazione di Android. Il framework dell'animazione ora utilizza il tempo vsync per gestire automaticamente la sincronizzazione tra gli animatori.
Per usi specializzati, le app possono accedere al tempo vsync tramite le API esposte da una nuova classe Choreographer. Le app possono richiedere l'annullamento della convalida al frame vsync successivo, un buon modo per pianificare l'animazione quando l'app non utilizza il framework dell'animazione. Per usi più avanzati, le app possono pubblicare un callback in modo che la classe Choreographer venga eseguita nel 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 animazioni ViewPropertyAnimator, per contribuire a 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 utilizza un livello nel corso della sua animazione. In precedenza, era una best practice animare viste complicate impostando un livello prima di avviare un'animazione e poi gestendo un evento onAnimationEnd() per rimuovere il livello al termine dell'animazione. Ora, il metodo with Layer() 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 in 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 avvia un trasferimento, Android Beam passa dalla tecnologia NFC al Bluetooth, rendendo molto semplice la gestione del trasferimento di un file da un dispositivo all'altro.
scoperta servizio rete Wi-Fi
Android 4.1 introduce il supporto del 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, tra cui dispositivi mobili, stampanti, fotocamere, lettori multimediali e altro ancora. Gli sviluppatori possono sfruttare il rilevamento dei servizi di rete Wi-Fi per creare giochi ed esperienze multiplayer o 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 consumer possono usare l'API per cercare e rilevare i servizi disponibili dai dispositivi connessi alla rete Wi-Fi locale. Dopo il rilevamento, le app possono usare l'API per risolvere il servizio in un indirizzo IP e in una porta tramite i quali 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 a un'app su un altro dispositivo mobile che supporta le connessioni peer-to-peer Wi-Fi.
scoperta servizio Wi-Fi P2P
Ice Cream Sandwich ha introdotto il supporto del Wi-Fi Peer-to-Peer (P2P), una tecnologia che consente alle app di scoprire e accoppiarsi direttamente tramite una connessione peer-to-peer ad alta larghezza di banda (in conformità con il programma di certificazione Wi-Fi DirectTM di Wi-Fi Alleiance). Wi-Fi P2P è il modo ideale per condividere contenuti multimediali, foto, file e altri tipi di dati e sessioni, anche quando non sono disponibili reti cellulari o Wi-Fi.
Android 4.1 va oltre il Wi-Fi P2P, aggiungendo il supporto API per il rilevamento di servizi pre-associato. Il rilevamento dei servizi preassociati consente alle tue app di ricevere dai dispositivi nelle vicinanze informazioni più utili sui servizi supportati prima che provino a 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 il servizio o l'applicazione di destinazione.
Ad esempio, questo significa che la tua app potrebbe rilevare solo i dispositivi "stampanti" o su cui è disponibile un gioco specifico, 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 servizio di rilevamento del servizio Wi-Fi P2P, puoi creare app e giochi multiplayer con cui puoi condividere foto, video, gameplay, punteggi e qualsiasi altra cosa, il tutto senza bisogno di internet o di una rete mobile. I tuoi 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 a un hotspot mobile. Le app possono chiedere se la rete attuale è a consumo prima di avviare un download di grandi dimensioni, che altrimenti sarebbe relativamente costoso per l'utente. Tramite l'API, ora puoi ottenere un quadro chiaro di quali reti sono sensibili all'utilizzo dei dati e gestire la tua attività di rete di conseguenza.
Nuove funzionalità multimediali
Accesso codec multimediale
Android 4.1 fornisce 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 in cui preferiscono. Ad esempio, ora puoi creare più istanze di un codec multimediale, inserire in coda i buffer di input e ricevere i buffer di output in cambio. 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 i dock audio che si interfacciano con i dispositivi Android. Questa funzionalità è visibile anche con l'Open Accessory Development Kit (ADK) Android per offrire a tutti gli sviluppatori la possibilità di creare il proprio hardware.
Attivazione 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 segnale acustico per sollecitare 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 in riproduzione e impedisce che le registrazioni inizino troppo tardi.
Audio multicanale
Android 4.1 supporta l'audio multicanale sui dispositivi che dispongono di 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 downgrade dell'audio al numero di canali supportati dal dispositivo (generalmente 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 incoerenti. Le app che richiedono una registrazione audio pulita e di alta qualità beneficeranno di questi preprocessori.
Concatenamento audio
MediaPlayer supporta il collegamento di stream audio per riprodurre i file audio senza pause. Questa funzionalità è utile per le app che richiedono transizioni fluide tra i file audio, ad esempio i lettori musicali per riprodurre album con tracce o giochi continui.
Router multimediale
Le nuove API MediaRouter, MediaRouteActionProvider e MediaRouteButton forniscono meccanismi standard e UI per scegliere dove riprodurre i contenuti multimediali. Il supporto è integrato per le cuffie con cavo, gli auricolari Bluetooth a2dp e gli altoparlanti, e puoi aggiungere opzioni di percorso personalizzate all'interno della tua app.
Calcolo di Renderscript
Android 4.1 estende il calcolo Renderscript per offrirti una maggiore flessibilità. Ora puoi campionare le texture nei tuoi script di calcolo Renderscript e sono disponibili nuovi pragmi per definire la precisione in virgola mobile richiesta dai tuoi script. Ciò consente di abilitare istruzioni NEON, come operazioni matematiche vettoriali veloci, sul percorso della CPU, che non sarebbero altrimenti possibili con lo standard completo IEEE 754-2008.
Ora puoi eseguire il debug dei tuoi script di calcolo Renderscript su dispositivi hardware e emulatori basati su x86. Puoi inoltre 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 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 alla modalità a schermo intero.
- È stata migliorata la velocità di rendering e l'utilizzo della memoria ridotto per migliorare le prestazioni di scorrimento e zoom.
- Miglioramento del rendimento delle animazioni HTML5/CSS3/Canvas.
- Miglioramento dell'inserimento di testo.
- Motore JavaScript (V8) aggiornato per migliorare le prestazioni di JavaScript.
- Supporto della 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.
Messaggistica cloud di Google per Android
Google Cloud Messaging (GCM) è un servizio che consente agli sviluppatori di inviare brevi dati di messaggi ai propri utenti sui dispositivi Android, senza bisogno di una soluzione di sincronizzazione proprietaria.
GCM gestisce tutti i dettagli di inserire i messaggi in coda e recapitarli in modo efficiente sui dispositivi Android scelti come target. Supporta il multicasting di messaggi e può raggiungere fino a 1000 dispositivi connessi contemporaneamente 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 ed effettuare la registrazione è facile. Consulta la pagina di Google Cloud Messaging per informazioni su registrazione, download e 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 il dispositivo prima che vengano consegnate e archiviate su un dispositivo.
Aggiornamenti delle app intelligenti
Gli aggiornamenti intelligenti delle app sono una nuova funzionalità di Google Play che introduce un modo migliore per distribuire gli aggiornamenti delle app ai dispositivi. Quando gli sviluppatori pubblicano un aggiornamento, Google Play ora fornisce ai 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, quindi sono più veloci da scaricare, risparmiare batteria del dispositivo e limitare l'utilizzo della larghezza di banda sul piano dati mobili degli utenti. In media, un aggiornamento smart dell'app è pari a circa 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 viene fornito automaticamente ai dispositivi degli utenti finali da Google Play, quindi ti serve soltanto una libreria thin client nelle tue app.
Poiché la tua app contiene solo la piccola libreria client, puoi usufruire di 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 gli sviluppatori di Google Play Services.