Vad är nytt i Android Lollipop

Efter månader av spekulation, hype och retas, släppte Google officiellt Android 5.0 till världen den 12 november 2014. SDK-enheten blev tillgänglig den 3 november. Vi visste redan mycket om funktionerna på grund av Lförhandsvisa SDK som släpptes den 25 juni 2014. Vad vi inte visste var vad Lskulle stå för.

Klubba var namnet på 5.0 uppdateringen. Ser tillbaka var Lollipop en tydlig favorit. Men om det ges tillräckligt med tid att spekulera, håller den uppenbara återigen kraften att överraska.

Lollipop är en signifikant uppdatering för Android-plattformen. Det är förmodligen den största versionen hittills, och förvisso den mest ambitiösa.

1. Funktioner

Nu när Android SDK är ute, här är en sammanfattning av några av de nya funktionerna i Android 5.0.

Batteri

Projekt Volta   

Under de senaste åren har Google fokuserat på varje Android-release på en viss utvecklingsaspekt av operativsystemet och hur det kan förbättras. För 5,0 var det att förbättra batteriets livslängd.

De JobScheduler API tillåter dig att köra jobb asynkront vid en senare tidpunkt eller under särskilda förhållanden. JobInfo Objekt kan användas för att definiera villkoren för ett schemalagt jobb.

Tack vare dessa tillägg har utvecklare nu mycket mer kontroll över när och hur batteridriven uppgifter utförs. 

Utvecklarverktyg

Det finns en ny ADBkommando dumpsys batterystats som kan användas för att generera statistiska data om batterianvändning på en enhet. Ta en titt på följande kommando för att se hur det fungerar.

adb shell dumpsys batterystats - laddad

anmälningar

I Lollipop kan meddelanden visas på låsskärmen. Utvecklare kan ange hur mycket information som visas i en anmälan via setVisibility, som accepterar följande värden:

  • VISIBILITY_PRIVATE: Visar grundläggande information, t.ex. meddelandets ikon, men döljer meddelandets innehåll
  • VISIBILITY_PUBLIC: visar meddelandets innehåll
  • VISIBILITY_SECRET: Visar ingenting, med undantag för även ikonen för meddelandet

Metadata kan nu läggas till meddelanden för att tillåta kategorier och prioritet och för att samla ytterligare kontakter.

Viktiga meddelanden, som inkommande samtal, kommer att visas i ett meddelande om fönstret, som kommer att flyta överst i den aktuella appen tills användaren bekräftar eller avvisar meddelandet.

Göra flera saker samtidigt

Recents-skärmen har bytt namn till Översikt. Med det nya namnet kommer nya API-apparater som förbättrar multitasking-alternativen på Android. Du kan nu få dina aktiviteter behandlade som uppgifter och visas i sitt eget fönster på översiktskärmen.

Till exempel kan en webbläsare app ställas in så att varje flik har sitt eget fönster. I föregående recents-skärm skulle en enda webbläsare-app ha visats.

Om du har en webbplats kan du lägga till  till din rubrik sektion för att få översikt visa den angivna färgen som rubrik för din webbplats.

Runtime och ART

Tidigare versioner av Android har alla använt Dalvik som process virtuell maskin. Applikationer skrivs vanligtvis i Java, som sedan kompileras till bytecode. Detta översätts sedan till Dalvik bytecode och lagras i .dex och .odex filer, för Dalvik att sedan bearbeta. 

Detta är en väldigt grundläggande förklaring av vad körtiden gör och förhoppningsvis förmedlar dess betydelse. Programmen körs på processens virtuella maskin, så dess prestanda bestämmer appens övergripande prestanda och är en flaskhals.

Dalvik använder JIT (Just In Time) kompilering, vilket innebär att det bara kör programmet för tillfället det behövs.

ART använder å andra sidan en AOT (Före tid) kompilering för att kompilera bytekoden. När en applikation är installerad, sammanställs den av ART dex2oatverktyg som skapar ELF-körbara filer istället för .odex-filer. Därefter exekveras applikationen från den redan sammanställda ELF-exekverbara.

Det är mycket sparad kompilering på bekostnad av längre installationsinstallationstider och lite extra diskutrymme.

Med tillägg av förbättrad sopsamling (GC), överträffar ART Dalvik på nästan alla sätt, vilket ger en skarpare och mer flytande Android-upplevelse.

Android TV

För att hjälpa till att ta med din app till stora skärmdisplayer introducerar Lollipop Leanback UI och den Android TV Input Framework (TIF). Leanback-biblioteket innehåller användargränssnitt widgets för tv-appar. TIF är utformat så att TV-apparater kan hantera videoströmmar från källor som HDMI-ingångar, TV-mottagare och IPTV-mottagare.

Grafik

Khronos OpenGL ES 3.1 har lagts till. Viktiga funktioner inkluderar:

  • beräkna shaders
  • separera skuggobjekt
  • skuggning språk förbättringar
  • tillägg för avancerade blandningslägen och felsökning
  • indirekta rita kommandon
  • multisample och stencil texturer

Android 5.0 återstår bakåtkompatibel med OpenGL ES 2.0 och 3.0.

Android Extension Pack (AEP)

För att komplettera OpenGL ES 3.1 har en uppsättning OpenGL ES-tillägg lagts till som tillåter följande:

  • garanterat fragmentskärmstöd för skuggförvaringsbuffertar, bilder och atomar (stöd för fragmentskärm är valfritt i OpenGL ES 3.1)
  • olika blandningslägen för varje färgfäste i en rambuffert
  • tessellation och geometri shaders
  • ASTC (LDR) texturkomprimeringsformat
  • per-provinterpolering och skuggning

Chrome View

Android Lollipop innehåller en ny version av Chromium for Web View, baserat på Krom m37 release som lägger till stöd för WebAudio, WebRTC och WebGL.

Inbyggt stöd för webbkomponenter ingår också i uppdateringen och tillåter användning av Polymer och dess Material Design element utan att kräva polyprofiler.

Med Android 5.0 kan Chromium nu uppdateras från Play Butik så nya API och buggfixar kommer att finnas tillgängliga omedelbart och behöver inte längre uppdateras av Android-operativsystemet.

Media Browsing    

Den nya android.media.browse Med API kan apperna bläddra i medieinnehållsbiblioteket i andra appar. De MediaBrowserService klass används för att exponera media i en applikation, medan Mediabrowser klassen används för att interagera med en mediebläddrarservice.

Media Playback Control

Två nya klasser har introducerats för att göra uppspelningskontroll enklare att hantera över olika användargränssnitt och tjänster.

MediaSession ersätter RemoteControlClient. Det ger en uppsättning återuppringningsmetoder för användning i transportkontroll och medieknappar. MediaController kan användas för att skapa en anpassad media-kontrollerapp, som sedan kan användas för att skicka kommandon till en MediaSession.

Nya sensorer

Två nya sensorer har introducerats:

  • Lutningsdetektor: förbättrar aktivitetsigenkänning
  • Hjärtfrekvenssensor: Kan rapportera hjärtat av användaren som rör enheten

Naturligtvis kräver båda dessa sensorer stödd hårdvara.

Förvaltad leverans

Enhetsadministratörer kan använda en hanterad provisioning service att lägga till appar i en separat hanterad profil. Om det finns ett befintligt personalkonto på en enhet som har tillhandahållits kommer de hanterade profilapparna att visas tillsammans med de befintliga applikationerna.

Enhetsägare

En enhetägare är en specialiserad typ av enhetsadministratör som kan skapa och ta bort sekundära användare och konfigurera globala inställningar, vilket i huvudsak ger Android ett traditionellt administratörs- och användarkontosystem.

Screen Pinning

Screen Pinning är en ny funktion som kan jämföras med kioskläget på IOS. Skärmstiftning innehåller följande funktioner:

  • Statusfältet är tomt.
  • Andra appar kan inte starta nya aktiviteter.
  • Användaranmälningar och statusinformation är dolda.
  • Den aktuella appen kan skapa nya aktiviteter så länge inga nya uppgifter skapas.

Skärmspärr kan aktiveras manuellt via Inställningar> Säkerhet> Skärmspärr. Det kan också aktiveras programmerat. De startLockTask Metoden kan ringas från din app för att aktivera skärmpinnen. Om appen inte är från en enhetens ägare visas en bekräftelsespost. De setLockTaskPackages Metoden kan ringas av en ägarapp och kommer att undvika bekräftelseshämtningen.

För att inaktivera skärmpinnen måste du ringa stopLockTask om den initierades av en enhetens ägarapp. Om den aktiverades av en icke-enhetens ägare, kan användaren avsluta skärmbindningsläge genom att hålla både knapparna bakåt och upprepade gånger.

Skärmdelning

Skärmupptagning är nu möjligt via det nya android.media.projection API: er. Skapandet VirtualDisplay Metoden låter appen ringa skärmen i ett ytobjekt, som sedan kan skickas över nätverket. API: n kan bara fånga oskyddat innehåll och innehåller inte ljud.

Kamera

RAW-bildinspelning har äntligen kommit till Android, tack vare det nya android.hardware.camera2 API.

Bluetooth Låg Energi

Android-enheter kan nu fungera somBluetooth LE kringutrustning. Apps kan utnyttja detta för att göra deras närvaro känd för närliggande enheter. Med den nya android.bluetooth.le API, kan du aktivera dina appar att ansluta till närliggande Bluetooth-enheter, sända annonser och skanna efter svar. Dessa nya funktioner kommer också med ett nytt manifesttillstånd, BLUETOOTH_ADMIN.

Dessa API-skivor kommer att vara mycket användbara när du arbetar med bärbara enheter, hälso- och fitnessprogram och övervakningsappar. Alla dessa förutsägda tillväxtområden för Android inom en snar framtid.

NFC

NFC har förbättrats på flera sätt:

  • Android Beam är nu ett alternativ i delningsmenyn.
  • invokeBeam kan användas för att initiera delning av data. Du behöver inte längre fysiskt stöta enheter.
  • registerAidsForService och setPreferredService har lagts till för att stödja utvecklingen av betalningsappar.

Flera nätverksanslutningar

Nya API: er tillåter att appar kan fråga nätverk för tillgängliga funktioner, till exempel om nätverket är cellulärt, mätat eller Wi-Fi.

Utskriftsram

Bitmappsbilder kan nu göras från PDF-dokumentsidor, med hjälp av det nya PdfRendered klass.

Inmatningsmetodredigerare (IME)

Du kan nu cykla genom olika IME som är tillgängliga för plattformen. Detta uppnås genom att använda shouldOffetToNextInputMethod metod.

2. Material Design

En av de största funktionerna i Android 5.0 är Material Design. Material Design är en uppsättning riktlinjer för visuell design, innehållsrörelse och användarinteraktion. Riktlinjerna är avsedda att gå utöver Android och är utformade för ett brett utbud av enheter och plattformar.

Polymer är ett anmärkningsvärt exempel på materialdesignens korsplattform, och Google skapar flera materialdesignelement för att hjälpa till med byggandet av webbplatser / webbapps med ett materialdesigntema. Trots sin plattformskaraktär är Material Design fortfarande en fokuspunkt för Android 5.0.

Nya Widgets

Lollipop introducerade två nya widgets:

  • CardView: Denna widget tillåter att information grupperas på ett konsekvent sätt. Själva kortet kan ha sitt djup ändrat för att främja eller markera det efter behov.
  • RecyclerView: Detta är en mer avancerad version av Listvy widget.

Nya teman    

Det finns två nya teman som utnyttjar principerna för materialdesign, Mörkt material och Lätta material. Båda gäller nya widgets för användargränssnitt. System widgets är lätta att anpassa och du kan ställa in deras färgpalett. Flera animeringar och övergångar är också standard för dessa teman, såsom rippel-effekten.

Djup och Skugga

Djup kan nu ändras på Android-visningar genom den nya Z-egenskapen. Högre Z-värden kastar större skuggor runt vyn, vilket ger upphov till ökad höjd. Detta är ett häftämne av Material Design ethos där målet är att skapa ett textilutseende genom att använda lager.

animationer

En annan häftklamra av Material Design är animering. Peka på feedbackanimationer och en mängd aktiviteter övergår all hjälp för att skapa en taktil och uppslukande upplevelse. Målet är inte att information ska dyka upp eller försvinna. Varje vy / objekt ska visas som ett lager på en yta.

Tänk dig ett fint, rent, vitt skrivbord. På det här skrivbordet har du olika papper, post-it-anteckningar och brevpapper. När du tittar ner vid skrivbordet är det inte en platt vy. Skrivbordet innehåller flera lager och objekt har olika djup och gjutna skuggor på skiktet nedan.

Om du behöver se en sida under en annan sida måste du flytta omslagssidan ur vägen. Om du vill placera din bärbara dator på skrivbordet måste du glida de befintliga papperna ur vägen för att skapa plats. När du rör på något på skrivbordet rör det sig, böjer, vibrerar och shuffles.

3. Använda Android 5.0

För att komma igång med Android 5.0, ladda ner SDK-plattformen för v21 i din favorit IDE. Detta kommer sannolikt att ske genom SDK-chef i Eclipse eller Android Studio.

I ApplicationManifest.xml fil och / eller build.gradle fil, ställa in targetSdkVersion till 21.

Viktiga förändringar och överväganden:

Det finns ett ordstäv i superhjältevärlden: "Med stor makt kommer det stora ansvaret." Det finns en liknande i utvecklingssamhället, "Med stora uppdateringar kommer omfattande testning."

Här är en snabb checklista om du redan har en Android-app:

  • Kör min app problemfri på ART?
  • Om min app använder meddelanden, hur kommer de att integreras i låsskärmen?
  • Kan användargränssnittet dra nytta av en uppdatering? Är Material Design en bra passform och hur mycket arbete kommer det att innebära?
  • De RemoteControlClient klassen är nu avskriven så ska jag gå över till MediaSession API?
  • WebView Blockerar nu blandat innehåll och tredjepartskakor som standard. Behöver jag använda setMixedContentMode och setAcceptThirdPartyCookies?

En fullständig listlista finns på Android Developer-webbplatsen. 

4. Bakåtkompatibilitet

En av de största förändringarna i Android 5.0 är användargränssnittet med introduktionen av Material Design. Använda Material Design och sätta bästa designpraxis att använda, tar mycket hänsyn till och arbete från utvecklarens sida.

För befintliga appar står utvecklarna inför ytterligare utmaningar, till exempel hur man utnyttjar de nya funktionerna 5.0 med bibehållen bakåtkompatibilitet, vilket ger en konsekvent användarupplevelse på olika API-nivåer.

För att visa hur du använder Android 5.0 och Material Design i ditt projekt har jag skapat en enkel app. Den består av en enda aktivitet som visar flera widgets. Jag har sedan lagt till följande i res / mapp:

  • menu-v21 /: Detta innehåller en kopia av menu_main.xml och kommer att användas för att visa materialdesignikoner på Android 5.0-enheter.
  • värden-v11 /: Detta innehåller en styles.xml fil som sätter grundtemat till holo.lightför alla enheter som kör Android 3.0 eller senare. Utseendeändringar till åtgärdsfältet har också gjorts i den här filen.
  • värden-v21 /: Detta innehåller en styles.xml fil som sätter grundtemat till material.ljusför enheter som körs på Android 5.0 och senareDet definierar också basfärgerna.

Nedanstående bild visar appen som körs på en 4.4.2-enhet och en 5.0-enhet. Materialtemat har tillämpats för 5.0+ enheter. Andra enheter kommer att få temat holo.light. Den visar standardläget för båda teman och användargränssnittet skillnaderna mellan dem.

Färg och åtgärdsfält 

Med materialdesign har det aldrig varit enklare att definiera appens basfärger för att passa in i ditt varumärke. Om du till exempel lägger till underkoden till ditt tema anger du meddelandetbar bakgrund, åtgärdsfält bakgrund och användargränssnitt widgets.

 

Resultaten kan vara mycket slående och appen kan identifieras med en blick. Det finns också en ny uppsättning av materialdesignikoner, som är ett annat snabbt och enkelt sätt att få en modern användargränssnittskänsla till en befintlig app.

Här är ett exempel på skillnaden som gjorts genom att använda Material Design ikoner och definiera huvudtema färgerna:

Användandet av aktivitetsfältet och färgen är ett dominerande inslag i Material Design och kan effektivt märka och särskilja din app. Ett sätt att tillhandahålla en konsekvent användarupplevelse över olika API-nivåer är att kopiera dessa funktioner till stilar och teman som är avsedda för olika API-nivåer.

Om vi ​​till exempel jämför programmet som körs på en 4.4.2-enhet till en 5.0-enhet:

Som du kan se har de ett mycket tydligt utseende på dem. För att förbättra detta kan vi använda samma Material Design-ikoner på API-nivåer lägre än 5.0. Vi kan också ställa in aktivitetsfältet så att det liknar Material Design-versionen.

För ikonerna kan vi ändra bilderna i res / meny / meny-main.xml till materialdesignikoner. För åtgärdsfältet kan vi redigera res / värden-v11 / styles.xml filen för att se ut som följande:

    

Här är en annan titt på de två jämförda, efter ändringarna:

Den version som körs på 4.4.2-enheten blir mer identifierbar som vår applikation och vårt varumärke. Utan några signifikanta ändringar ser appen mer konsekvent över de olika API: erna och har en modernare känsla för det.

Använda icke-stödda funktioner

Vissa funktioner är exklusiva för Android Lollipop, framförallt aktivitetsövergångarna och de avslöjande animationerna. Det betyder inte nödvändigtvis att du måste avstå från att använda dem eller skapa en separat app som använder dem. Du kan kontrollera systemversionen vid körning och bara utföra vissa API-samtal om appen körs på en lämplig version av Android.

Ett exempel för att kontrollera om systemet är 5.0+:

// Kontrollera om vi kör på Android 5.0 eller senare om (Build.VERSION.SDK_INT> = Build.VERSION_CODES.LOLLIPOP) // Ring några materialdesign APIs här annat // Implementera denna funktion utan materialdesign

Håller tidigare teman

Bara för att du kan göra något betyder inte alltid att du borde. Det finns inget fel på det Holo-tema som Android har använt sedan Honeycomb. Du kan tillhandahålla alternativa layouter och teman och få dem att tillämpas på olika API-nivåer. Du kan till exempel använda Material Design-temat för alla enheter med ett API på 5,0 eller högre. Holo-temat gäller för alla enheter med ett API på 3.0 och däröver. Slutligen kan det klassiska temat tillämpas på alla enheter under 3.0.

För att göra detta skulle du använda följande kataloger i ditt projekt:

  • res / värden / (standardplats)
  • res / värden-v11 / (för 3,0 +)
  • res / värden-v21 / (för 5,0 +)

I varje katalog kan du placera en styles.xml fil som definierar det önskade temat.

Stödbibliotek    

V7 r21-supportbiblioteken stöder flera widgets och funktioner från Material Design.

Theme.AppCompat möjliggör användningen av färgpalett genom att utöka en av AppCompat-teman. Till exempel, Theme.AppCompat.Light:

Det ger också Material Design widgets för följande:

  • Redigera text
  • CheckBox
  • Spinnare
  • Radio knapp
  • SwitchCompat
  • CheckedTextView

V7-supportbiblioteket ger också tillgång till det nya CardView och RecyclerView widgetar.

Om du håller med AppCompat i dina layoutdesigner är det möjligt att skapa en enda layout som bibehåller samma bilder under flera API-nivåer.

För att kunna använda V7-supportbiblioteket måste du lägga till ditt projekt. Om du använder Android Studio och Gradle, kan det läggas till i ditt avhängningsområde i build.gradle fil:

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

När du inkluderar v7-supportbiblioteket måste du ställa in din minSdkVersion till 7.

Slutsats

Android 5.0 är en stor release. Uppdateringar som ART och meddelanden på skärmen kommer att få omedelbar inverkan. Andra uppdateringar som materialdesign, översikt och jobbplanering tar tid för utvecklare att implementera och anta.

Användarna kommer också att spela en stor roll när det gäller att forma den närmaste framtiden för Android. Tidigare försök att föra Android till TV-platsen har inte blivit väl mottagna. Smarta TV-apparater i det hela taget behöver inte bli en måste-ha-enhet.

Att ha en enhetlig och bekant användarupplevelse över flera enheter och skärmar är spännande och enligt min mening nödvändig framåt. Men framgången med detta kommer i slutändan att bero på adoption och användarnas efterfrågan.

Google satte scenen vid årets Google I / O och med Lollipop är skådespelarna nu monterade. Oavsett hur lång tid spelet går för och plauditsna det får ingen säga att Google inte har försökt.