Wat is er nieuw in Android Lollipop

Na maanden van speculatie, hype en plagen, bracht Google officieel officiële versie van Android 5.0 uit op 12 november 2014. De SDK werd op 3 november beschikbaar gesteld. We wisten al veel van de functies, vanwege de Lvoorbeeld-SDK die op 25 juni 2014 is uitgebracht. Wat we niet wisten, was wat de Lzou staan ​​voor.

Lolly was de naam die werd gegeven aan de 5.0-update. Terugkijkend was Lollipop een duidelijke favoriet. Maar als het genoeg tijd wordt gegund om te speculeren, heeft het voor de hand liggende nogmaals de kracht om te verrassen.

Lollipop is een belangrijke update voor het Android-platform. Het is misschien wel de grootste release tot nu toe, en zeker de meest ambitieuze.

1. Functies

Nu de Android SDK uit is, volgt hier een samenvatting van enkele van de nieuwe functies in Android 5.0.

Accu

Project Volta   

In de afgelopen jaren heeft Google met elke Android-release gefocust op een bepaald ontwikkelingsaspect van het besturingssysteem en hoe dit kan worden verbeterd. Voor 5.0 verbeterde de levensduur van de batterij.

De JobScheduler Met API kunt u taken op een later tijdstip of onder bepaalde voorwaarden asynchroon uitvoeren. JobInfo objecten kunnen worden gebruikt om de voorwaarden te definiëren waaronder een geplande taak zal worden uitgevoerd.

Dankzij deze toevoegingen hebben ontwikkelaars nu veel meer controle over wanneer en hoe taken voor het leeghalen van de batterij worden uitgevoerd. 

Ontwikkelaarstools

Er is een nieuwe ADBcommando dumpsys batterijstatus die kan worden gebruikt om statistische gegevens te genereren over het batterijgebruik op een apparaat. Bekijk het volgende commando om te zien hoe dit werkt.

adb shell dumpsys batterystats --charged

meldingen

In Lollipop kunnen meldingen worden weergegeven op het vergrendelingsscherm. Ontwikkelaars kunnen de hoeveelheid informatie opgeven die wordt weergegeven in een melding via setVisibility, die de volgende waarden accepteert:

  • VISIBILITY_PRIVATE: toont basisinformatie, zoals het meldingspictogram, maar verbergt de inhoud van de melding
  • VISIBILITY_PUBLIC: toont de inhoud van de melding
  • VISIBILITY_SECRET: toont niets, met uitzondering van zelfs het meldingspictogram

Metadata kunnen nu aan meldingen worden toegevoegd om categorieën en prioriteiten toe te staan ​​en om extra contactpersonen te verzamelen.

Belangrijke meldingen, zoals inkomende oproepen, worden weergegeven in een meldingsvenster voor meldingen dat boven aan de huidige app blijft totdat de gebruiker de melding bevestigt of negeert.

Multitasking

Het recents-scherm is hernoemd naar Overzicht. Met de nieuwe naam komen er nieuwe API's die multitasking-opties op Android verbeteren. U kunt nu uw activiteiten als taken laten behandelen en in het overzichtsscherm in hun eigen venster weergeven.

Er kan bijvoorbeeld een webbrowser-app worden ingesteld, zodat elk tabblad een eigen venster heeft. In het vorige recents-scherm zou een enkele browser-app zijn weergegeven.

Als u een website heeft, kunt u toevoegen  aan uw kopgedeelte om overzicht te hebben, geeft u de gegeven kleur als koptekst voor uw website.

Looptijd en ART

Eerdere versies van Android hebben allemaal Dalvik gebruikt als de virtuele procesmachine. Toepassingen worden meestal geschreven in Java, die vervolgens wordt gecompileerd naar bytecode. Dit wordt vervolgens naar de bytecode van Dalvik vertaald en opgeslagen in .dex en .odex bestanden, voor Dalvik om vervolgens te verwerken. 

Dit is een zeer eenvoudige uitleg van wat de runtime aan het doen is en geeft hopelijk het belang ervan weer. Toepassingen worden uitgevoerd op de virtuele procesmachine, dus de prestaties bepalen de algehele prestaties van de app en vormen een knelpunt.

Dalvik gebruikt JIT (Just In Time) -compilatie, wat betekent dat de toepassing alleen wordt uitgevoerd op het moment dat deze nodig is.

ART daarentegen gebruikt een AOT (Ahead Of Time) compilatie om de bytecode te compileren. Wanneer een toepassing is geïnstalleerd, wordt deze gecompileerd door ART's dex2oatutility, waarmee ELF-uitvoerbare bestanden worden gemaakt in plaats van .odex-bestanden. Vanaf dat moment wordt de applicatie uitgevoerd vanuit het reeds gecompileerde ELF-programma.

Dat is veel opgeslagen compileren ten koste van langere installatietijden en wat extra schijfruimte.

Met de toevoeging van verbeterde garbage collection (GC), presteert ART bijna op bijna alle manieren beter dan Dalvik, wat zorgt voor een scherpere en meer vloeiende Android-ervaring.

Android TV

Om uw app naar een groot scherm te brengen, introduceert Lollipop de Leanback UI en de Android TV Input Framework (TIF). De Leanback-bibliotheek biedt widgets voor gebruikersinterfaces voor tv-apps. TIF is zo ontworpen dat tv-apps videostreams kunnen verwerken van bronnen zoals HDMI-ingangen, tv-tuners en IPTV-ontvangers.

grafiek

Khronos OpenGL ES 3.1 is toegevoegd. Belangrijkste kenmerken zijn:

  • berekenen van shaders
  • afzonderlijke arceringobjecten
  • schaduwrijke taalverbeteringen
  • uitbreidingen voor geavanceerde overvloeimodi en foutopsporing
  • indirecte tekenopdrachten
  • multisample en stencilstructuren

Android 5.0 blijft achterwaarts compatibel met OpenGL ES 2.0 en 3.0.

Android-extensiepakket (AEP)

Ter aanvulling van OpenGL ES 3.1 is een set OpenGL ES-uitbreidingen toegevoegd die het volgende mogelijk maken:

  • gegarandeerde ondersteuning voor fragmentshader voor shaderopslagbuffers, afbeeldingen en atomics (fragmentshaderondersteuning is optioneel in OpenGL ES 3.1)
  • verschillende mengmodi voor elke kleurbijlage in een framebuffer
  • mozaïekpatroon en geometrie shaders
  • ASTC (LDR) structuurcompressieformaat
  • per-sample interpolatie en arcering

Chrome-weergave

Android Lollipop bevat een nieuwe versie van Chromium voor webweergave, gebaseerd op de Chromium m37 uitgave die ondersteuning voor WebAudio toevoegt, WebRTC en WebGL.

Native ondersteuning voor webcomponenten is ook opgenomen in de update en maakt het gebruik van Polymer en zijn Materiaal ontwerp elementen zonder polyfills.

Vanaf Android 5.0 is Chromium nu vanuit de Play Store te updaten, zodat nieuwe API's en bugfixes direct beschikbaar zullen zijn en geen update van het Android-besturingssysteem meer nodig hebben.

Media bladeren    

De nieuwe android.media.browse API staat apps toe om door de mediacontentbibliotheek van andere apps te bladeren. De MediaBrowserService klasse wordt gebruikt om media in een toepassing te belichten, terwijl de MediaBrowser klasse wordt gebruikt om te communiceren met een mediabrowser service.

Media Playback Control

Er zijn twee nieuwe klassen geïntroduceerd om het beheer van het afspelen eenvoudiger te maken voor verschillende UI's en services.

MediaSession vervangt RemoteControlClient. Het biedt een set callback-methoden voor gebruik in transportknoppen en mediaknoppen. MediaController kan worden gebruikt om een ​​aangepaste mediacontroller-app te maken, die vervolgens kan worden gebruikt om opdrachten naar a te verzenden MediaSession.

Nieuwe sensoren

Er zijn twee nieuwe sensoren geïntroduceerd:

  • Hellingsdetector: verbetert de herkenning van activiteiten
  • Hartslagsensor: in staat om de hartslag te rapporteren van de gebruiker die het apparaat aanraakt

Uiteraard hebben beide sensoren ondersteunde hardware nodig.

Managed Provisioning

Apparaatbeheerders kunnen a gebruiken managed provisioning service om apps toe te voegen aan een afzonderlijk beheerd profiel. Als er een bestaande persoonlijke account op een apparaat is dat is ingericht, worden de beheerde profiel-apps weergegeven naast de bestaande apps.

Eigenaar van het apparaat

Een apparaateigenaar is een gespecialiseerd type apparaatbeheerder die secundaire gebruikers kan maken en verwijderen en algemene instellingen kan configureren, waardoor Android in feite een traditioneel beheerders- en gebruikersaccountsysteem wordt.

Scherm vastzetten

Het vastzetten van schermen is een nieuwe functie die vergelijkbaar is met de kioskmodus op iOS. Het vastzetten van schermen bevat de volgende functies:

  • De statusbalk is leeg.
  • Andere apps kunnen geen nieuwe activiteiten starten.
  • Gebruikersmeldingen en statusinformatie zijn verborgen.
  • De huidige app kan nieuwe activiteiten maken zolang er geen nieuwe taken worden gemaakt.

Scherm vastzetten kan handmatig worden geactiveerd via Instellingen> Beveiliging> Scherm vastzetten. Het kan ook programmatisch worden geactiveerd. De startLockTask methode kan vanuit uw app worden gebeld om schermpinning te activeren. Als de app niet van een eigenaar van het apparaat afkomstig is, wordt een bevestigingsvraag weergegeven. De setLockTaskPackages methode kan worden aangeroepen door een eigenaar-app en zal de bevestigingsprompt vermijden.

Om het vastzetten van schermen te deactiveren, moet u bellen stopLockTask als het werd geïnitieerd door een apparaateigenaar-app. Als het is geactiveerd door een eigenaar die geen apparaat is, kan de gebruiker de modus voor het vastzetten van het scherm verlaten door zowel de knoppen Terug en Recents vast te houden.

Scherm delen

Schermvastlegging is nu mogelijk via het nieuwe android.media.projection API's. Het maken VirtualDisplay Met deze methode kan de oproepende app het scherm vastleggen in een oppervlakobject dat vervolgens over het netwerk kan worden verzonden. De API kan alleen niet-beveiligde inhoud vastleggen en bevat geen audio.

Camera

RAW-beeldregistratie is eindelijk dankzij Android op Android aangekomen android.hardware.camera2 API.

Bluetooth Low Energy

Android-apparaten kunnen nu fungeren alsBluetooth LE-randapparatuur. Apps kunnen hiervan gebruik maken om hun aanwezigheid bekend te maken aan apparaten in de buurt. Met het nieuwe android.bluetooth.le API's kunt u uw apps inschakelen om verbinding te maken met Bluetooth-apparaten in de buurt, advertenties uitzenden en zoeken naar antwoorden. Deze nieuwe functies worden ook geleverd met een nieuwe manifest-machtiging, BLUETOOTH_ADMIN.

Deze API's zijn bijzonder handig bij het werken met draagbare apparaten, gezondheids- en fitness-apps en monitoring-apps. Dit zijn allemaal voorspelde groeigebieden voor Android in de nabije toekomst.

NFC

NFC is op verschillende manieren verbeterd:

  • Android Beam is nu een optie in het menu Delen.
  • invokeBeam kan worden gebruikt om het delen van gegevens te initiëren. U hoeft niet langer fysiek apparaten te stoten.
  • registerAidsForService en setPreferredService zijn toegevoegd om de ontwikkeling van betalingsapps te ondersteunen.

Meerdere netwerkverbindingen

Met nieuwe API's kunnen apps netwerken bevragen op beschikbare functies, zoals of het netwerk mobiel, gemeten of draadloos is.

Printing Framework

Bitmapafbeeldingen kunnen nu worden gerenderd vanaf PDF-documentpagina's, met behulp van de nieuwe PdfRendered klasse.

Invoermethode-editors (IME)

U kunt nu door verschillende IME's bladeren die beschikbaar zijn voor het platform. Dit wordt bereikt door de shouldOffetToNextInputMethod methode.

2. Materiaalontwerp

Een van de grootste functies van Android 5.0 is Material Design. Materiaalontwerp is een set richtlijnen met betrekking tot visueel ontwerp, inhoudsbeweging en gebruikersinteractie. De richtlijnen zijn bedoeld om verder te gaan dan Android en zijn ontworpen voor een breed scala aan apparaten en platforms.

Polymer is een opmerkelijk voorbeeld van de cross-platform aard van Material Design, waarbij Google verschillende Material Design-webelementen heeft gemaakt om te helpen bij het bouwen van websites / web-apps met een Material Design-thema. Ondanks de cross-platform aard blijft Material Design nog steeds een brandpunt van Android 5.0.

Nieuwe widgets

Lollipop introduceerde twee nieuwe widgets:

  • CardView: Met deze widget kan informatie op een consistente manier worden gegroepeerd. De kaart zelf kan zijn diepte gewijzigd hebben om het te promoten of te accentueren indien nodig.
  • RecyclerView: Dit is een meer geavanceerde versie van de Lijstweergave widget.

Nieuwe thema's    

Er zijn twee nieuwe thema's die gebruik maken van Material Design-principes, Donker materiaal en Licht materiaal. Beide passen nieuwe widgets voor het gebruikersinterfacesysteem toe. Systeemwidgets zijn eenvoudig aan te passen en u kunt hun kleurenpalet instellen. Verschillende animaties en overgangen zijn ook standaardwaarden voor deze thema's, zoals het rimpeleffect.

Diepte en schaduw

Diepte kan nu worden gewijzigd op Android-weergaven via de nieuwe Z-eigenschap. Hogere Z-waarden werpen grotere schaduwen rond het zicht, wat de indruk geeft van een verhoogde hoogte. Dit is een nietje van de ethiek van Material Design, waarbij het doel is om een ​​textiel uiterlijk te creëren door het gebruik van lagen.

animaties

Een ander nietje van Material Design is animatie. Touch feedback-animaties en een scala aan activiteitenovergangen helpen allemaal bij het creëren van een tactiele en meeslepende ervaring. Het doel is niet om informatie te laten verschijnen of verdwijnen. Elke weergave / object moet als een laag op een oppervlak worden weergegeven.

Stel je een mooi, schoon, wit bureau voor. Op dit bureau heb je verschillende papieren, post-it notes en briefpapier. Als je naar het bureau kijkt, is het geen vlak beeld. Het bureau bevat verschillende lagen en objecten hebben verschillende diepten en werpschaduwen op de onderliggende laag.

Als u een pagina onder een andere pagina wilt zien, moet u de betreffende pagina uit de weg halen. Als u uw laptop op uw bureau wilt plaatsen, moet u de bestaande papieren uit de weg schuiven om ruimte te maken. Wanneer u iets op uw bureau aanraakt, beweegt het, buigt het, vibreert en schudt het.

3. Android 5.0 gebruiken

Download het SDK-platform voor v21 in uw voorkeurs-IDE om aan de slag te gaan met Android 5.0. Dit zal waarschijnlijk worden gedaan via de SDK-manager in Eclipse of Android Studio.

In de ApplicationManifest.xml bestand en / of build.gradle bestand, stel de targetSdkVersion naar 21.

Belangrijke wijzigingen en overwegingen:

Er is een gezegde in de wereld van superhelden: "Met grote kracht komt grote verantwoordelijkheid." Er is een vergelijkbare in de ontwikkelingsgemeenschap: "Met grote updates wordt uitgebreid getest."

Hier is een korte checklist, als je al een Android-app hebt:

  • Werkt mijn app probleemloos op ART?
  • Als mijn app meldingen gebruikt, hoe worden deze geïntegreerd in het vergrendelingsscherm?
  • Kan de gebruikersinterface profiteren van een vernieuwing? Past Material Design goed en hoeveel werk zal het inhouden?
  • De RemoteControlClient klasse is nu verouderd dus moet ik naar de MediaSession API?
  • WebView blokkeert nu standaard gemengde inhoud en cookies van derden. Moet ik gebruiken setMixedContentMode en setAcceptThirdPartyCookies?

Een volledige lijst met lijsten is te vinden op de Android Developer-website. 

4. Compatibiliteit met eerdere versies

Een van de grootste veranderingen in Android 5.0 is de gebruikersinterface met de introductie van Material Design. Gebruik maken van materiaalontwerp en de beste ontwerppraktijken gebruiken om te gebruiken, kost veel aandacht en werk van de kant van de ontwikkelaar.

Voor bestaande apps worden ontwikkelaars geconfronteerd met verdere uitdagingen, zoals het gebruik van de nieuwe functies van 5.0 terwijl de backwards-compatibiliteit behouden blijft, en biedt een consistente gebruikerservaring op verschillende API-niveaus..

Om te laten zien hoe u Android 5.0 en Material Design in uw project gebruikt, heb ik een eenvoudige app gemaakt. Het bestaat uit een enkele activiteit die verschillende widgets weergeeft. Ik heb toen het volgende toegevoegd aan de res / map:

  • menu-v21 /: Dit bevat een kopie van de menu_main.xml en worden gebruikt om Material Design-pictogrammen weer te geven op Android 5.0-apparaten.
  • -waarden v11 /: Dit bevat een styles.xml bestand dat het basisthema instelt holo.lightvoor alle apparaten met Android 3.0 of hoger. Uiterlijk wijzigingen in de actiebalk zijn ook in dit bestand gemaakt.
  • -waarden v21 /: Dit bevat een styles.xml bestand dat het basisthema instelt op material.lightvoor apparaten met Android 5.0 en hogerHet definieert ook de basiskleuren.

De afbeelding hieronder toont de app die wordt uitgevoerd op een 4.4.2-apparaat en een 5.0-apparaat. Het materiaalthema is toegepast voor 5.0+ apparaten. Andere apparaten ontvangen het holo.light-thema. Het toont de standaardstatus van beide thema's en de verschillen in gebruikersinterface tussen beide.

Kleur en actiebalk 

Met Material Design is het nog nooit zo gemakkelijk geweest om de basiskleuren van uw app te definiëren die passen bij uw merk. Als u bijvoorbeeld de onderstaande code toevoegt aan uw thema, wordt de melding ingesteldbalkachtergrond, de achtergrond van de actiebalk en widgets voor de gebruikersinterface.

 

De resultaten kunnen heel opvallend zijn en de app kan in één oogopslag herkenbaar worden. Er is ook een nieuwe reeks pictogrammen voor materiaalontwerp, een andere snelle en eenvoudige manier om een ​​moderne gebruikersinterfacegevoel aan elke bestaande app te geven.

Hier is een voorbeeld van het verschil dat is gemaakt door Material Design-pictogrammen te gebruiken en de hoofdthema-kleuren te definiëren:

Het gebruik van de actiebalk en kleur is een dominerende functie van Material Design en kan uw app effectief markeren en onderscheiden. Een manier om gebruikers op verschillende API-niveaus een consistente gebruikerservaring te bieden, is door deze functies te repliceren naar stijlen en thema's die zijn bedoeld voor verschillende API-niveaus.

Als we bijvoorbeeld de toepassing vergelijken die wordt uitgevoerd op een 4.4.2-apparaat naar een 5.0-apparaat:

Zoals u kunt zien, hebben ze een heel onderscheidende uitstraling. Om dit te verbeteren, kunnen we dezelfde Material Design-pictogrammen gebruiken op API-niveaus lager dan 5.0. We kunnen de actiebalk ook zodanig stijlen dat deze lijkt op de versie van Material Design.

Voor de pictogrammen kunnen we de afbeeldingen wijzigen res / menu / menu-main.xml naar Material Design-pictogrammen. Voor de actiebalk kunnen we de res / waarden-v11 / styles.xml bestand om er als volgt uit te zien:

    

Hier is nog een blik op de twee vergeleken, na de veranderingen:

De versie op het 4.4.2-apparaat wordt herkenbaarder als onze applicatie en ons merk. Zonder belangrijke wijzigingen lijkt de app al consistenter over de verschillende API's en heeft deze een modernere uitstraling.

Niet-ondersteunde functies gebruiken

Bepaalde functies zijn exclusief voor Android Lollipop, met name de activiteitsovergangen en de onthullende animaties. Dit betekent niet noodzakelijk dat u geen gebruik meer hoeft te maken van deze functies of een afzonderlijke app kunt maken die hiervan gebruikmaakt. U kunt de systeemversie tijdens runtime controleren en alleen bepaalde API-aanroepen uitvoeren als de app wordt uitgevoerd op een geschikte versie van Android.

Een voorbeeld om te controleren of het systeem 5.0+ is:

// Controleer of we op Android 5.0 of hoger worden uitgevoerd (Build.VERSION.SDK_INT> = Build.VERSION_CODES.LOLLIPOP) // Bel hier enkele API's voor materieel ontwerp else // Implementeer deze functie zonder materiaalontwerp

Houden van vorige thema's

Alleen omdat je iets kunt doen, betekent niet altijd dat je het zou moeten doen. Er is absoluut niets mis met het Holo-thema dat Android sinds Honeycomb heeft gebruikt. U kunt alternatieve lay-outs en thema's bieden en deze toepassen op verschillende API-niveaus. U kunt bijvoorbeeld het thema Materiaalontwerp toepassen op alle apparaten met een API van 5.0 en hoger. Het Holo-thema is van toepassing op elk apparaat met een API van 3.0 en hoger. Ten slotte zou het klassieke thema kunnen worden toegepast op alle apparaten onder 3.0.

Om dit te doen, zou u de volgende mappen in uw project gebruiken:

  • res / waarden / (standaardlocatie)
  • res / waarden-v11 / (voor 3.0 +)
  • res / waarden-v21 / (voor 5.0 +)

In elke map kunt u een plaatsen styles.xml bestand dat het gewenste thema definieert.

Bibliotheken ondersteunen    

De V7 r21-ondersteuningsbibliotheken ondersteunen verschillende widgets en functies van Material Design.

Theme.AppCompat maakt het gebruik van het kleurenpalet mogelijk door een van de AppCompat-thema's uit te breiden. Bijvoorbeeld, Theme.AppCompat.Light:

Het biedt ook Material Design-widgets voor het volgende:

  • Tekst bewerken
  • CheckBox
  • Spinner
  • Radio knop
  • SwitchCompat
  • CheckedTextView

De V7-ondersteuningsbibliotheek geeft ook toegang tot het nieuwe CardView en RecyclerView widgets.

Als u bij AppCompat in uw lay-outontwerpen blijft, is het mogelijk om één lay-out te maken die hetzelfde beeldmateriaal in meerdere API-niveaus behoudt.

Om de V7-ondersteuningsbibliotheek te gebruiken, moet u uw project toevoegen. Als u Android Studio en Gradle gebruikt, kan dit worden toegevoegd aan uw gebied voor afhankelijkheden in de build.gradle het dossier:

afhankelijkheden compile 'com.android.support:appcompat-v7:21.0.+' compile 'com.android.support:cardview-v7:21.0.+' compile 'com.android.support:recyclerview-v7:21.0.+'  

Als u de v7-ondersteuningsbibliotheek opneemt, moet u uw minSdkVersion naar 7.

Conclusie

Android 5.0 is een belangrijke release. Updates zoals ART en meldingen op het scherm hebben direct effect. Andere updates zoals Materiaalontwerp, Overzicht en Taakplanning zullen tijd kosten voor ontwikkelaars om te implementeren en goed te keuren.

De gebruikers spelen ook een grote rol bij het vormgeven van de nabije toekomst van Android. Eerdere pogingen om Android naar de tv-ruimte te brengen, zijn niet goed ontvangen. Smart TV's over het algemeen moeten nog een must-have-apparaat worden.

Het hebben van een uniforme en vertrouwde gebruikerservaring op meerdere apparaten en schermen is opwindend en naar mijn mening noodzakelijk in de toekomst. Het succes hiervan hangt echter uiteindelijk af van de acceptatie en de vraag van de gebruiker.

Google zette het podium op de Google I / O van dit jaar en met Lollipop zijn de acteurs nu verzameld. Ongeacht hoe lang het spel wordt uitgevoerd en de toejuichingen die het ontvangt, niemand kan zeggen dat Google het niet heeft geprobeerd.