Dopo mesi di speculazioni, hype e prese in giro, Google ha ufficialmente rilasciato Android 5.0 al mondo il 12 novembre 2014. L'SDK è stato reso disponibile il 3 novembre. Sapevamo già molto sulle funzionalità, a causa della Lanteprima SDK che è stato rilasciato il 25 giugno 2014. Ciò che non sapevamo era quale Lresisterebbe.
Lecca-lecca era il nome dato all'aggiornamento 5.0. Guardando indietro, Lollipop era un chiaro favorito. Ma, se gli viene dato abbastanza tempo per speculare, l'ovvio ancora una volta ha il potere di sorprendere.
Lollipop è un aggiornamento significativo per la piattaforma Android. È senza dubbio la più grande release fino ad oggi, e sicuramente la più ambiziosa.
Ora che l'SDK di Android non è disponibile, ecco una carrellata di alcune delle nuove funzionalità di Android 5.0.
Negli ultimi anni, Google si è concentrato su ogni versione Android su un particolare aspetto dello sviluppo del sistema operativo e su come può essere migliorato. Per 5.0, stava migliorando la durata della batteria.
Il JobScheduler
API consente di eseguire i lavori in modo asincrono in un secondo momento o in condizioni particolari. JobInfo
gli oggetti possono essere utilizzati per definire le condizioni in cui verrà eseguito un lavoro programmato.
Grazie a queste aggiunte, gli sviluppatori hanno ora un controllo molto maggiore su quando e come vengono eseguite le attività di drenaggio della batteria.
C'è un nuovo ADBcomando dumpsys batterie
che può essere utilizzato per generare dati statistici sull'utilizzo della batteria su un dispositivo. Dai un'occhiata al seguente comando per vedere come funziona.
adb shell dumpsys batterystats --caricato
In Lollipop, le notifiche possono essere visualizzate sulla schermata di blocco. Gli sviluppatori possono specificare la quantità di informazioni visualizzate all'interno di una notifica tramite setVisibility
, che accetta i seguenti valori:
VISIBILITY_PRIVATE
: mostra le informazioni di base, come l'icona della notifica, ma nasconde il contenuto della notificaVISIBILITY_PUBLIC
: mostra il contenuto della notificaVISIBILITY_SECRET
: mostra nulla, escludendo anche l'icona della notificaOra i metadati possono essere aggiunti alle notifiche per consentire categorie e priorità e per raccogliere ulteriori contatti.
Le notifiche chiave, come le chiamate in arrivo, verranno visualizzate in una finestra di notifica a comparsa, che verrà visualizzata nella parte superiore dell'app corrente fino a quando l'utente non riconosce o rifiuta la notifica.
La schermata dei recenti è stata rinominata panoramica. Con il nuovo nome arrivano nuove API che migliorano le opzioni di multitasking su Android. Ora puoi avere le tue attività trattate come attività e mostrarle nella loro finestra nella schermata panoramica.
Ad esempio, è possibile impostare un'app browser Web in modo che ogni scheda abbia una propria finestra. Nella schermata precedente, una sola app browser sarebbe stata visualizzata.
Se hai un sito web, puoi aggiungere alla tua sezione di intestazione per avere una panoramica mostra il colore dato come intestazione per il tuo sito web.
Le versioni precedenti di Android hanno tutte utilizzato Dalvik come macchina virtuale di processo. Le applicazioni sono scritte comunemente in Java, che viene quindi compilato in bytecode. Questo viene quindi tradotto in bytecode Dalvik e memorizzato in .dex
e .ODEX
file, per elaborare poi Dalvik.
Questa è una spiegazione molto basilare di ciò che sta facendo il runtime e si spera che trasmetta la sua importanza. Le applicazioni vengono eseguite sulla macchina virtuale di processo, pertanto le sue prestazioni determinano le prestazioni generali dell'app e rappresentano un collo di bottiglia.
Dalvik utilizza JIT (Just In Time), ovvero che esegue l'applicazione solo nel momento in cui è necessaria.
L'ARTE, d'altra parte, usa un AOT (Ahead Of Time) compilazione per compilare il bytecode. Quando un'applicazione è installata, è compilata da ART dex2oat
utility, che crea eseguibili ELF invece di file .odex. Da quel momento in poi, l'applicazione viene eseguita dall'eseguibile ELF già compilato.
Si tratta di un sacco di compilazione salvata a scapito dei lunghi tempi di installazione delle applicazioni e di un po 'di spazio su disco aggiuntivo.
Con l'aggiunta della garbage collection (GC) migliorata, ART supera in modo eccellente Dalvik, rendendo l'esperienza Android più nitida e fluida.
Per aiutare a portare la tua app su schermi di grandi dimensioni, Lollipop presenta Leanback UI e il Android TV Input Framework (TIF). La libreria Leanback fornisce i widget dell'interfaccia utente per le app TV. TIF è progettato per consentire alle app TV di gestire flussi video da fonti come ingressi HDMI, sintonizzatori TV e ricevitori IPTV.
Khronos OpenGL ES 3.1 è stato aggiunto. Le caratteristiche principali includono:
Android 5.0 rimane compatibile con OpenGL ES 2.0 e 3.0.
Per integrare OpenGL ES 3.1, è stata aggiunta una serie di estensioni OpenGL ES che consentono quanto segue:
Android Lollipop include una nuova versione di Chromium per Web View, basata su Chromium m37 rilascio che aggiunge il supporto per WebAudio, WebRTC e WebGL.
Il supporto nativo per Web Components è incluso anche nell'aggiornamento e consentirà l'uso di Polymer e dei suoi Design dei materiali elementi senza richiedere polyfill.
A partire da Android 5.0, Chromium è ora aggiornabile dal Play Store, quindi nuove API e correzioni di bug saranno immediatamente disponibili e non richiederà più un aggiornamento del sistema operativo Android.
Il nuovo android.media.browse
L'API consente alle app di esplorare la libreria di contenuti multimediali di altre app. Il MediaBrowserService
la classe è usata per esporre i media in un'applicazione, mentre il MediaBrowser
la classe è utilizzata per interagire con un servizio browser multimediale.
Sono state introdotte due nuove classi per rendere il controllo della riproduzione più semplice da gestire attraverso diverse interfacce utente e servizi.
MediaSession
sostituisce RemoteControlClient
. Fornisce una serie di metodi di callback da utilizzare nei controlli di trasporto e nei pulsanti multimediali. MediaController
può essere utilizzato per creare un'app controller multimediale personalizzata, che può quindi essere utilizzata per inviare comandi a MediaSession
.
Sono stati introdotti due nuovi sensori:
Naturalmente, entrambi questi sensori richiedono hardware supportato.
Gli amministratori dei dispositivi possono utilizzare a servizio di provisioning gestito per aggiungere app a un profilo gestito separato. Se esiste un account personale esistente su un dispositivo che è stato fornito, le app del profilo gestito verranno visualizzate insieme alle applicazioni esistenti.
Il proprietario di un dispositivo è un tipo specializzato di amministratore del dispositivo che può creare e rimuovere utenti secondari e configurare impostazioni globali, dando in sostanza a Android un sistema tradizionale di account utente e amministratore.
Lo screen pinning è una nuova funzionalità che è paragonabile alla modalità kiosk su iOS. Il blocco schermo include le seguenti funzionalità:
Il blocco schermo può essere attivato manualmente tramite Impostazioni> Sicurezza> Blocco schermo. Può anche essere attivato a livello di programmazione. Il startLockTask
il metodo può essere chiamato dalla tua app per attivare il blocco dello schermo. Se l'app non proviene dal proprietario di un dispositivo, verrà visualizzata una richiesta di conferma. Il setLockTaskPackages
il metodo può essere chiamato da un'app del proprietario ed eviterà la richiesta di conferma.
Per disattivare il blocco dello schermo, è necessario chiamare stopLockTask
se è stato avviato da un'app del proprietario del dispositivo. Se è stato attivato da un proprietario non di dispositivo, l'utente può uscire dalla modalità di blocco schermo tenendo entrambi i pulsanti Indietro e Indietro.
Cattura dello schermo è ora possibile attraverso il nuovo android.media.projection
API. Il creare VirtualDisplay
Il metodo consente all'app chiamante di acquisire lo schermo in un oggetto di superficie, che può quindi essere inviato attraverso la rete. L'API può acquisire solo contenuti non protetti e non include l'audio.
L'acquisizione di immagini RAW è finalmente arrivata su Android, grazie al nuovo android.hardware.camera2
API.
I dispositivi Android ora possono agire comePeriferiche Bluetooth LE. Le app possono fare uso di questo per rendere nota la loro presenza ai dispositivi vicini. Con il nuovo android.bluetooth.le
API, puoi abilitare le tue app a connettersi ai dispositivi Bluetooth nelle vicinanze, trasmettere annunci pubblicitari e scansionare le risposte. Queste nuove funzionalità includono anche una nuova autorizzazione manifest, BLUETOOTH_ADMIN
.
Queste API saranno estremamente utili quando si lavora con dispositivi indossabili, app di salute e fitness e monitoraggio di app. Tutti questi sono previsti aree di crescita per Android nel prossimo futuro.
NFC è stato migliorato in diversi modi:
invokeBeam
può essere utilizzato per avviare la condivisione dei dati. Non è più necessario fisicamente attaccare i dispositivi.registerAidsForService
e setPreferredService
sono stati aggiunti per aiutare lo sviluppo di app di pagamento.Le nuove API consentono alle app di interrogare le reti per le funzionalità disponibili, ad esempio se la rete è cellulare, misurata o Wi-Fi.
Ora è possibile eseguire il rendering di immagini bitmap dalle pagine del documento PDF, utilizzando il nuovo PdfRendered
classe.
È ora possibile scorrere diversi IME disponibili per la piattaforma. Questo si ottiene usando il shouldOffetToNextInputMethod
metodo.
Una delle più grandi funzionalità di Android 5.0 è Material Design. Material Design è un insieme di linee guida relative alla progettazione visiva, al movimento del contenuto e all'interazione dell'utente. Le linee guida intendono andare oltre Android e sono progettate per un'ampia gamma di dispositivi e piattaforme.
Polymer è un notevole esempio della natura multipiattaforma di Material Design, con Google che crea diversi elementi web di Material Design per aiutare nella costruzione di siti Web / applicazioni web con un tema di Material Design. Nonostante la sua natura multipiattaforma, Material Design rimane ancora un punto focale di Android 5.0.
Lollipop ha introdotto due nuovi widget:
CardView
: Questo widget consente di raggruppare le informazioni in modo coerente. La carta stessa può essere modificata in profondità per promuoverla o evidenziarla secondo necessità.RecyclerView
: Questa è una versione più avanzata di Visualizzazione elenco
widget di.Ci sono due nuovi temi che fanno uso dei principi di Material Design, Materiale scuro e Materiale leggero. Entrambi applicano nuovi widget di sistema dell'interfaccia utente. I widget di sistema sono facili da personalizzare e puoi impostare la tavolozza dei colori. Diverse animazioni e transizioni sono anche impostazioni predefinite di questi temi, come ad esempio l'effetto a catena.
La profondità può ora essere modificata nelle viste Android tramite la nuova proprietà Z. Valori Z più alti proiettano ombre più grandi intorno alla vista, dando l'impressione di maggiore elevazione. Questo è un punto fermo dell'ethos del Material Design in cui l'obiettivo è creare un aspetto tessile attraverso l'uso di strati.
Un altro punto fermo di Material Design è l'animazione. Le animazioni di feedback tattili e una serie di transizioni di attività contribuiscono a creare un'esperienza tattile e coinvolgente. L'obiettivo non è quello di far scoppiare o sparire informazioni. Ogni vista / oggetto dovrebbe apparire come un livello su una superficie.
Immagina una scrivania bella, pulita, bianca. Su questa scrivania ci sono vari documenti, post-it e articoli di cancelleria. Quando guardi la scrivania, non è una vista piatta. La scrivania contiene diversi livelli e gli oggetti hanno diverse profondità e proiettano ombre sul livello sottostante.
Se hai bisogno di vedere una pagina sotto un'altra pagina, devi spostare la pagina di copertura. Se si desidera posizionare il portatile sulla scrivania, è necessario far scorrere i fogli esistenti per creare spazio. Quando tocchi qualcosa sulla scrivania, si muove, si piega, vibra e rimescola.
Per iniziare con Android 5.0, scarica la piattaforma SDK per v21 nel tuo IDE preferito. Questo molto probabilmente sarà fatto tramite il gestore SDK in Eclipse o Android Studio.
Nel ApplicationManifest.xml file e / o build.gradle
file, impostare il targetSdkVersion
a 21.
Cambiamenti e considerazioni importanti:
C'è un detto nel mondo dei supereroi: "Con un grande potere, arriva una grande responsabilità". Ce n'è uno simile nella comunità di sviluppo: "Con grandi aggiornamenti, vengono effettuati numerosi test".
Ecco una breve lista di controllo, se hai già un'app per Android:
RemoteControlClient
la classe è ora deprecata quindi dovrei passare a MediaSession
API?WebView
ora blocca i contenuti misti e i cookie di terze parti per impostazione predefinita. Devo usare setMixedContentMode
e setAcceptThirdPartyCookies
?Un elenco completo può essere trovato sul sito web degli sviluppatori Android.
Uno dei più grandi cambiamenti in Android 5.0 è l'interfaccia utente con l'introduzione di Material Design. Fare uso del Material Design e mettere le migliori pratiche di progettazione da usare, richiede molta considerazione e lavoro da parte dello sviluppatore.
Per le app esistenti, gli sviluppatori devono affrontare ulteriori sfide, ad esempio sfruttare le nuove funzionalità di 5.0 mantenendo al contempo la retrocompatibilità, offrendo un'esperienza utente coerente su diversi livelli API.
Per mostrare come utilizzare Android 5.0 e Material Design nel tuo progetto, ho creato una semplice app. Consiste in una singola attività che visualizza diversi widget. Ho quindi aggiunto quanto segue al res /
cartella:
menù-V21 /
: Questo contiene una copia del menu_main.xml e verrà utilizzato per visualizzare le icone di Material Design sui dispositivi Android 5.0.Valori-V11 /
: Questo contiene a styles.xml file che imposta il tema base su holo.lightper tutti i dispositivi con Android 3.0 o versioni successive. Anche le modifiche all'aspetto alla barra delle azioni sono state apportate in questo file.Valori-V21 /
: Questo contiene a styles.xml file che imposta il tema base su material.lightper dispositivi con Android 5.0 e versioni successive. Definisce anche i colori di base.L'immagine qui sotto mostra l'app in esecuzione su un dispositivo 4.4.2 e un dispositivo 5.0. Il tema Materiale è stato applicato per dispositivi 5.0+. Altri dispositivi riceveranno il tema holo.light. Mostra lo stato predefinito di entrambi i temi e le differenze dell'interfaccia utente tra di loro.
Con Material Design, la definizione dei colori di base dell'app per adattarsi al tuo marchio non è mai stata così semplice. Ad esempio, aggiungendo il codice seguente al tema verrà impostata la notificasfondo della barra, lo sfondo della barra delle azioni e i widget dell'interfaccia utente.
I risultati possono essere molto sorprendenti e l'app può essere identificata con un semplice colpo d'occhio. C'è anche un nuovo set di icone di Material Design, che sono un altro modo semplice e veloce per dare una moderna interfaccia utente a qualsiasi app esistente.
Ecco un esempio della differenza ottenuta utilizzando le icone di Material Design e definendo i colori principali del tema:
L'uso della barra delle azioni e del colore è una caratteristica dominante del Material Design e può efficacemente marcare e distinguere la tua app. Un modo per fornire un'esperienza utente coerente attraverso diversi livelli API è replicare queste funzionalità rispetto a stili e temi destinati a diversi livelli API.
Ad esempio, se confrontiamo l'applicazione in esecuzione su un dispositivo 4.4.2 su un dispositivo 5.0:
Come puoi vedere, hanno un aspetto molto particolare per loro. Per migliorare questo, possiamo usare le stesse icone di Material Design su livelli API inferiori a 5.0. Possiamo anche modellare la barra delle azioni in modo che assomigli alla versione di Material Design.
Per le icone, possiamo cambiare le immagini in res / menu / menu main.xml alle icone del materiale. Per la barra delle azioni, possiamo modificare il res / valori-V11 / styles.xml file per apparire come il seguente:
Ecco un altro sguardo ai due confrontati, dopo le modifiche:
La versione in esecuzione sul dispositivo 4.4.2 diventa più riconoscibile come la nostra applicazione e il nostro marchio. Senza modifiche significative, l'app sembra già più coerente tra le diverse API e ha un aspetto più moderno.
Alcune funzionalità sono esclusive per Android Lollipop, in particolare le transizioni di attività e le animazioni di rivelazione. Questo non significa necessariamente che devi rinunciare a usarli o creare un'app separata che li usi. È possibile verificare la versione del sistema in fase di esecuzione e eseguire determinate chiamate API solo se l'app è in esecuzione su una versione appropriata di Android.
Un esempio per verificare se il sistema è 5.0+:
// Verifica se stiamo eseguendo su Android 5.0 o versioni successive if (Build.VERSION.SDK_INT> = Build.VERSION_CODES.LOLLIPOP) // Chiama qui alcune API di progettazione dei materiali else // Implementa questa funzionalità senza material design
Solo perché puoi fare qualcosa non significa sempre che dovresti. Non c'è assolutamente nulla di sbagliato nel tema Holo che Android utilizza da Honeycomb. Puoi fornire layout e temi alternativi e applicarli a livelli API diversi. Ad esempio, è possibile applicare il tema Design materiale a qualsiasi dispositivo con un'API di 5.0 o successiva. Il tema Holo si applica a qualsiasi dispositivo con un'API di 3.0 e successive. Infine, il tema classico potrebbe essere applicato a tutti i dispositivi sotto 3.0.
Per fare ciò, dovresti usare le seguenti directory nel tuo progetto:
In ogni directory, puoi inserire un styles.xml file che definirà il tema desiderato.
Le librerie di supporto V7 r21 supportano diversi widget e funzionalità di Material Design.
Theme.AppCompat consente di utilizzare la tavolozza dei colori estendendo uno dei temi AppCompat. Per esempio, Theme.AppCompat.Light
:
Fornisce inoltre widget di Material Design per quanto segue:
La libreria di supporto V7 dà anche accesso al nuovo CardView
e RecyclerView
widgets.
Se rimani con AppCompat nei progetti di layout, è possibile creare un layout unico che manterrà gli stessi elementi visivi in più livelli API.
Per utilizzare la libreria di supporto V7, è necessario aggiungerlo al progetto. Se stai utilizzando Android Studio e Gradle, può essere aggiunto alla sezione delle dipendenze in build.gradle
file:
dipendencies compile 'com.android.support:appcompat-v7:21.0.+' compile 'com.android.support:cardview-v7:21.0.+' compile 'com.android.support:recyclerview-v7:21.0.+'
Quando includi la libreria di supporto v7 devi impostare il tuo minSdkVersion
a 7.
Android 5.0 è una versione importante. Aggiornamenti come ART e notifiche sullo schermo avranno un impatto immediato. Altri aggiornamenti come Material Design, Overview e Job Scheduling richiedono tempo per gli sviluppatori di implementare e adottare.
Gli utenti giocheranno anche un ruolo importante nel plasmare il prossimo futuro di Android. I precedenti tentativi di portare Android nello spazio TV non sono stati ben accolti. Le smart TV nel complesso devono ancora diventare un dispositivo indispensabile.
Avere un'esperienza utente unificata e familiare su più dispositivi e schermi è eccitante e, a mio parere, è necessario andare avanti. Il successo di questo, tuttavia, dipenderà in ultima analisi dall'adozione e dalla domanda degli utenti.
Google è salito sul palco del Google I / O di quest'anno e con Lollipop gli attori sono ora riuniti. Indipendentemente da quanto a lungo il gioco viene eseguito e gli applausi ricevuti, nessuno può dire che Google non abbia provato.