Novità di Android Lollipop

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.

1. Caratteristiche

Ora che l'SDK di Android non è disponibile, ecco una carrellata di alcune delle nuove funzionalità di Android 5.0.

Batteria

Progetto Volta   

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. 

Strumenti di sviluppo

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

notifiche

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 notifica
  • VISIBILITY_PUBLIC: mostra il contenuto della notifica
  • VISIBILITY_SECRET: mostra nulla, escludendo anche l'icona della notifica

Ora 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.

Multitasking

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.

Runtime e ART

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 dex2oatutility, 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.

Android TV

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.

Grafica

Khronos OpenGL ES 3.1 è stato aggiunto. Le caratteristiche principali includono:

  • shader di calcolo
  • separare gli oggetti shader
  • miglioramenti del linguaggio di ombreggiatura
  • estensioni per le modalità di fusione avanzate e il debug
  • comandi di disegno indiretto
  • trame multicampo e stencil

Android 5.0 rimane compatibile con OpenGL ES 2.0 e 3.0.

Android Extension Pack (AEP)

Per integrare OpenGL ES 3.1, è stata aggiunta una serie di estensioni OpenGL ES che consentono quanto segue:

  • supporto dello shader di frammenti garantito per i buffer, le immagini e l'atomizzazione dello shader (il supporto di framment shader è facoltativo in OpenGL ES 3.1)
  • diverse modalità di fusione per ciascun allegato di colore in un frame buffer
  • tessellation e shaders geometrici
  • Formato di compressione delle texture ASTC (LDR)
  • interpolazione e ombreggiatura per campione

Chrome View

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.

Navigazione multimediale    

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.

Controllo riproduzione 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.

Nuovi sensori

Sono stati introdotti due nuovi sensori:

  • Rivelatore di inclinazione: migliora il riconoscimento delle attività
  • Sensore della frequenza cardiaca: in grado di segnalare la frequenza cardiaca dell'utente che tocca il dispositivo

Naturalmente, entrambi questi sensori richiedono hardware supportato.

Provisioning gestito

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.

Proprietario del dispositivo

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.

Blocco schermo

Lo screen pinning è una nuova funzionalità che è paragonabile alla modalità kiosk su iOS. Il blocco schermo include le seguenti funzionalità:

  • La barra di stato è vuota.
  • Altre app non possono avviare nuove attività.
  • Le notifiche degli utenti e le informazioni sullo stato sono nascoste.
  • L'app attuale può creare nuove attività purché non vengano create nuove attività.

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.

Condivisione schermo

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.

telecamera

L'acquisizione di immagini RAW è finalmente arrivata su Android, grazie al nuovo android.hardware.camera2 API.

Bluetooth Low Energy

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

NFC è stato migliorato in diversi modi:

  • Android Beam è ora un'opzione nel menu di condivisione.
  • 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.

Connessioni di rete multiple

Le nuove API consentono alle app di interrogare le reti per le funzionalità disponibili, ad esempio se la rete è cellulare, misurata o Wi-Fi.

Quadro di stampa

Ora è possibile eseguire il rendering di immagini bitmap dalle pagine del documento PDF, utilizzando il nuovo PdfRendered classe.

Input Method Editors (IME)

È ora possibile scorrere diversi IME disponibili per la piattaforma. Questo si ottiene usando il shouldOffetToNextInputMethod metodo.

2. Design dei materiali

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.

Nuovi widget

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.

Nuovi temi    

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.

Profondità e ombra

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.

animazioni

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.

3. Utilizzo di Android 5.0

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:

  • La mia app funziona senza problemi su ART?
  • Se la mia app utilizza le notifiche, come saranno integrate nella schermata di blocco?
  • L'interfaccia utente può beneficiare di un aggiornamento? Il Material Design è una buona idea e quanto lavoro comporta?
  • Il 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. 

4. Compatibilità all'indietro

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 successiveDefinisce 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.

Colore e barra delle azioni 

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.

Utilizzo di funzionalità non supportate

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

Mantenere temi precedenti

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:

  • res / Valori / (posizione predefinita)
  • res / valori-V11 / (per 3.0 +)
  • res / valori-V21 / (per 5.0 +)

In ogni directory, puoi inserire un styles.xml file che definirà il tema desiderato.

Librerie di supporto    

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:

  • Modifica il testo
  • CheckBox
  • Spinner
  • RadioButton
  • SwitchCompat
  • CheckedTextView

La libreria di supporto V7 dà anche accesso al nuovo CardViewRecyclerView 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.

Conclusione

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.