Hva er nytt i Android Lollipop

Etter måneder med spekulasjoner, hype og plage, ga Google offisielt ut Android 5.0 til verden 12. november 2014. SDK ble gjort tilgjengelig 3. november. Vi visste allerede mye om funksjonene, på grunn av Lforhåndsvisning SDK som ble utgitt 25. juni 2014. Det vi ikke visste var hva Lville stå for.

Kjærlighet på pinne ble navnet gitt til 5.0-oppdateringen. Ser tilbake, var Lollipop en klar favoritt. Men, hvis gitt nok tid til å spekulere, holder den åpenbare igjen kraften til å overraske.

Lollipop er en betydelig oppdatering for Android-plattformen. Det er uten tvil den største utgivelsen hittil, og absolutt den mest ambisiøse.

1. Funksjoner

Nå som Android SDK er ute, er det en oversikt over noen av de nye funksjonene i Android 5.0.

Batteri

Prosjekt Volta   

I de senere årene har Google fokusert på alle Android-utgivelser på et bestemt utviklingsaspekt av operativsystemet og hvordan det kan forbedres. For 5,0 var det bedre batterilevetid.

De JobScheduler API lar deg kjøre jobber asynkront på et senere tidspunkt eller under spesielle forhold. JobInfo Objekter kan brukes til å definere vilkårene for en planlagt jobb.

Takket være disse tilleggene har utviklere nå mye mer kontroll over når og hvordan batteridrikkende oppgaver utføres. 

Utviklerverktøy

Det er en ny ADBkommando dumpsys batterystats som kan brukes til å generere statistiske data om batteribruk på en enhet. Ta en titt på følgende kommando for å se hvordan dette fungerer.

adb shell dumpsys batterystats - ladet

Varsler

I Lollipop kan meldinger vises på låseskjermen. Utviklere kan spesifisere mengden informasjon som vises i et varsel via setVisibility, som aksepterer følgende verdier:

  • VISIBILITY_PRIVATE: Viser grunnleggende informasjon, for eksempel varselens ikon, men skjuler varselinnholdets innhold
  • VISIBILITY_PUBLIC: Viser meldingens innhold
  • VISIBILITY_SECRET: Viser ingenting, unntatt selv varselets ikon

Metadata kan nå legges til varsler for å tillate kategorier og prioritet, og å samle flere kontakter.

Nøkkelvarsler, for eksempel innkommende anrop, vises i et meldingsvindu med hovedoppslag, som vil flyte øverst i den aktuelle appen til brukeren bekrefter eller avviser varselet.

multitasking

Nyhetsskjermbildet har blitt omdøpt til oversikt. Med det nye navnet kommer nye APIer som forbedrer multitaskingsalternativer på Android. Du kan nå få dine aktiviteter behandlet som oppgaver og bli vist i eget vindu på oversiktsskjermbildet.

For eksempel kan en nettleser-app settes slik at hver fane har sitt eget vindu. På den forrige skjermbildet for nylig ble det vist en enkelt nettleser-app.

Hvis du har et nettsted, kan du legge til  til overskriften din for å få oversikt vise den angitte farge som topptekst for nettstedet ditt.

Runtime og ART

Tidligere versjoner av Android har alle brukt Dalvik som prosess virtuell maskin. Programmer skrives vanligvis i Java, som deretter kompileres til bytecode. Dette blir så oversatt til Dalvik bytecode og lagret i .dex og .ODEX filer, for Dalvik å prosessere. 

Dette er en veldig grunnleggende forklaring på hva kjøretiden gjør og forhåpentligvis formidler dens betydning. Programmer kjører på prosess virtuell maskin, slik at ytelsen avgjør den generelle ytelsen til appen og er en flaskehals.

Dalvik bruker JIT (Just In Time) kompilering, noe som betyr at den bare kjører programmet i øyeblikket det trengs.

ART bruker derimot en AOT (Forut for tid) kompilering for å kompilere bytekoden. Når et program er installert, er det utarbeidet av ARTs dex2oatverktøyet, som lager ELF-kjørbare i stedet for .odex-filer. Fra da av blir applikasjonen utført fra den allerede utførte ELF-kjørbare.

Det er mye lagret kompilering på bekostning av lengre programinstallasjonstider og litt ekstra diskplass.

Med tillegg til forbedret søppelsamling (GC), utgjør ART langt bedre enn Dalvik, noe som gir en skarpere og mer flytende Android-opplevelse..

Android TV

For å bidra til å bringe appen din til store skjermdisplayer, introduserer Lollipop Leanback brukergrensesnitt og Android TV Input Framework (TIF). Leanback-biblioteket gir brukergrensesnitt widgets for TV-programmer. TIF er designet for å tillate TV-apparater å håndtere videostrømmer fra kilder som HDMI-innganger, TV-tunere og IPTV-mottakere.

grafikk

Khronos OpenGL ES 3.1 er lagt til. Viktige funksjoner inkluderer:

  • beregne shaders
  • separate skyggerobjekter
  • skygge språk forbedringer
  • utvidelser for avanserte blandemoduser og feilsøking
  • indirekte tegningskommandoer
  • multisample og stencil teksturer

Android 5.0 forblir bakoverkompatibel med OpenGL ES 2.0 og 3.0.

Android Extension Pack (AEP)

For å supplere OpenGL ES 3.1 har et sett med OpenGL ES utvidelser blitt lagt til som tillater følgende:

  • garantert fragment shader støtte for shader lagring buffere, bilder og atomics (fragment shader støtte er valgfritt i OpenGL ES 3.1)
  • forskjellige blandemoduser for hvert fargevedlegg i en rambuffer
  • tessellasjon og geometri shaders
  • ASTC (LDR) tekstur kompresjonsformat
  • per-prøve interpolering og skygging

Chrome View

Android Lollipop inneholder en ny versjon av Chromium for Web View, basert på Krom m37 utgivelse som legger til støtte for WebAudio, WebRTC og WebGL.

Innfødt støtte for webkomponenter er også inkludert i oppdateringen og vil tillate bruk av polymer og dens Material Design elementer uten å kreve polyfiller.

Fra og med Android 5.0 er Chrome nå oppdaterbart fra Play-butikken, så nye APIer og feilrettinger vil være tilgjengelig umiddelbart, og vil ikke lenger kreve en oppdatering av Android-operativsystemet.

Media Browsing    

Den nye android.media.browse API lar apper bla gjennom medieinnholdsbiblioteket til andre apper. De MediaBrowserService Klassen brukes til å avsløre media i et program, mens Mediabrowser Klassen brukes til å samhandle med en nettleser tjeneste.

Medieavspillingskontroll

To nye klasser er innført for å gjøre avspillingskontroll enklere å administrere på tvers av forskjellige brukergrensesnitt og tjenester.

MediaSession erstatter RemoteControlClient. Den gir et sett tilbakekallingsmetoder for bruk i transportkontroller og medieknapper. MediaController kan brukes til å lage en tilpasset media-kontroller-app, som deretter kan brukes til å sende kommandoer til en MediaSession.

Nye sensorer

To nye sensorer er innført:

  • Tiltdetektor: forbedrer aktivitetsgjenkjenning
  • Hjertefrekvenssensor: i stand til å rapportere hjertefrekvensen til brukeren som berører enheten

Selvfølgelig krever begge sensorene støttet maskinvare.

Administrert levering

Enhetsadministratorer kan bruke en administrert provisjonstjeneste å legge til apper i en separat administrert profil. Hvis det finnes en eksisterende personlig konto på en enhet som er blitt levert, vises de administrerte profilappsene sammen med eksisterende programmer.

Enhetseier

En enhetseier er en spesialisert type enhetsadministrator som kan opprette og fjerne sekundære brukere og konfigurere globale innstillinger, i hovedsak å gi Android et tradisjonelt administrator- og brukerkontosystem.

Skjermspenning

Screen pinning er en ny funksjon som kan sammenlignes med kiosk modus på iOS. Skjermspenning inneholder følgende funksjoner:

  • Statuslinjen er tom.
  • Andre apper kan ikke starte nye aktiviteter.
  • Brukervarsler og statusinformasjon er skjult.
  • Nåværende app kan opprette nye aktiviteter så lenge det ikke opprettes nye oppgaver.

Skjermspenning kan aktiveres manuelt via Innstillinger> Sikkerhet> Skjermsparing. Det kan også aktiveres programmatisk. De startLockTask Metoden kan bli ringt fra appen din for å aktivere skjermspenning. Hvis appen ikke er fra en enhetseier, vises en bekreftelsespåmelding. De setLockTaskPackages Metoden kan bli kalt av en eierapp og vil unngå bekreftelsesprompten.

For å deaktivere skjermpinne må du ringe stopLockTask hvis det ble initiert av en enhetseier-app. Hvis den ble aktivert av en ikke-enhetseier, kan brukeren gå ut av skjermspenningsmodus ved å holde både tilbakeknappen og tilbakekallings knappene.

Skjermdeling

Skjermfangst er nå mulig gjennom det nye android.media.projection APIer. Skape VirtualDisplay Metoden gjør det mulig for anropsprogrammet å fange skjermen i et overflateobjekt, som deretter kan sendes over nettverket. API-en kan bare ta opp usikkert innhold og inkluderer ikke lyd.

Kamera

RAW-bildeopptak har endelig kommet på Android, takket være det nye android.hardware.camera2 API.

Bluetooth Lav energi

Android-enheter kan nå fungere somBluetooth LE periferiutstyr. Apper kan gjøre bruk av dette for å gjøre deres tilstedeværelse kjent for nærliggende enheter. Med den nye android.bluetooth.le APIer, kan du aktivere appene dine til å koble til nærliggende Bluetooth-enheter, kringkaste annonser og søke etter svar. Disse nye funksjonene kommer også med en ny manifesttillatelse, BLUETOOTH_ADMIN.

Disse APIene vil være ekstremt nyttige når du arbeider med bærbare enheter, helse- og treningsprogrammer og overvåkingsprogrammer. Alle disse er forventede vekstområder for Android i nær fremtid.

NFC

NFC har blitt forbedret på flere måter:

  • Android Beam er nå et alternativ i delingsmenyen.
  • invokeBeam kan brukes til å starte deling av data. Du trenger ikke lenger å støte enheter fysisk.
  • registerAidsForService og setPreferredService har blitt lagt til for å hjelpe utviklingen av betalingsapplikasjoner.

Flere nettverkstilkoblinger

Nye APIer tillater at apps kan søke etter nettverk for tilgjengelige funksjoner, for eksempel om nettverket er mobilt, måles eller Wi-Fi.

Utskriftsramme

Bitmap-bilder kan nå gjengis fra PDF-dokument sider, ved hjelp av det nye PdfRendered klasse.

Input Method Editors (IME)

Du kan nå sykle gjennom forskjellige IMEer som er tilgjengelige for plattformen. Dette oppnås ved å bruke shouldOffetToNextInputMethod metode.

2. Material Design

En av de største funksjonene i Android 5.0 er Material Design. Material Design er et sett med retningslinjer knyttet til visuell design, innholdsbevegelse og brukerinteraksjon. Retningslinjene er ment å gå utover Android og er designet for et bredt utvalg av enheter og plattformer.

Polymer er et bemerkelsesverdig eksempel på Material Design-plattformen, med Google opprettet flere Material Design-webelementer for å hjelpe til med bygging av nettsteder / webapps med et Material Design-tema. Til tross for sin tverrplattform natur, er Material Design fortsatt et fokuspunkt for Android 5.0.

Nye Widgets

Lollipop introduserte to nye widgets:

  • CardView: Denne widgeten gjør at informasjon kan grupperes sammen på en konsekvent måte. Selve kortet kan ha sin dybde forandret for å fremme eller markere den etter behov.
  • RecyclerView: Dette er en mer avansert versjon av Listevisning widget.

Nye temaer    

Det er to nye temaer som bruker prinsippene for Material Design, Mørkt materiale og Lett materiale. Begge bruker nytt grensesnitt for brukergrensesnitt. System widgets er enkle å tilpasse, og du kan angi fargepaletten. Flere animasjoner og overganger er også standard for disse temaene, for eksempel rippel-effekten.

Dybde og skygge

Dybden kan nå endres på Android-visninger gjennom den nye Z-eiendommen. Høyere Z-verdier støtter større skygger rundt utsikten, noe som gir utseendet av økt høyde. Dette er en stift av Material Design ethos hvor målet er å skape et tekstilutseende gjennom bruk av lag.

animasjoner

En annen stift av Material Design er animasjon. Berør tilbakemelding animasjoner og en rekke aktiviteter overganger all hjelp til å skape en taktil og nedsenkende opplevelse. Målet er ikke å få informasjon som dukker opp eller forsvinner. Hver visning / objekt skal vises som et lag på en overflate.

Tenk deg et fint, rent, hvitt skrivebord. På dette skrivebordet har du ulike papirer, post-it notater og skrivesaker. Når du ser ned på pulten, er det ikke en flatt utsikt. Skrivebordet inneholder flere lag, og objekter har forskjellige dybder og støpte skygger på laget under.

Hvis du trenger å se en side under en annen side, må du flytte omslagssiden ut av veien. Hvis du vil plassere den bærbare datamaskinen på skrivebordet, må du skyve eksisterende papirer ut av veien for å få plass. Når du berører noe på skrivebordet, beveger det seg, bøyer, vibrerer og blander seg.

3. Bruke Android 5.0

For å komme i gang med Android 5.0, last ned SDK-plattformen for v21 i din foretrukne IDE. Dette vil sannsynligvis bli gjort gjennom SDK-lederen i Eclipse eller Android Studio.

I ApplicationManifest.xml fil og / eller build.gradle fil, sett inn targetSdkVersion til 21.

Viktige endringer og overveielser:

Det er et ordsprog i superheroverdenen: "Med stor makt kommer det store ansvar." Det er en lignende i utviklingssamfunnet, "med store oppdateringer, kommer omfattende testing."

Her er en rask sjekkliste, hvis du allerede har en Android-app:

  • Kjører appen problemfri på ART?
  • Hvis appen min bruker varsler, hvordan blir de integrert i låseskjermen?
  • Kan brukergrensesnittet få nytte av en oppdatering? Er Material Design en god form og hvor mye arbeid vil det innebære?
  • De RemoteControlClient klassen er nå avskrevet, så skal jeg flytte over til MediaSession API?
  • WebView Nå blokkerer blandet innhold og tredjeparts cookies som standard. Må jeg bruke setMixedContentMode og setAcceptThirdPartyCookies?

En komplett listeliste finner du på Android Developer-nettstedet. 

4. Kompatibilitet bakover

En av de største endringene i Android 5.0 er brukergrensesnittet med introduksjonen av Material Design. Bruke Material Design og sette beste design praksis å bruke, tar mye hensyn og arbeid fra utviklerens side.

For eksisterende applikasjoner står utviklere overfor ytterligere utfordringer, for eksempel hvordan du kan utnytte de nye funksjonene til 5.0, samtidig som du opprettholder bakoverkompatibilitet, og gir en konsistent brukeropplevelse på tvers av ulike API-nivåer.

For å vise hvordan du bruker Android 5.0 og Material Design i prosjektet ditt, har jeg opprettet en enkel app. Den består av en enkelt aktivitet som viser flere widgets. Jeg har da lagt til følgende i res / mappe:

  • meny-V21 /: Dette inneholder en kopi av menu_main.xml og vil bli brukt til å vise Material Design ikoner på Android 5.0-enheter.
  • Verdiene-v11 /: Dette inneholder en styles.xml fil som setter grunntemaet til holo.lightfor alle enheter som kjører Android 3.0 eller nyere. Utsiktsendringer til handlingslinjen er også gjort i denne filen.
  • Verdiene-V21 /: Dette inneholder en styles.xml fil som setter grunntemaet til materialetfor enheter som kjører på Android 5.0 og nyereDet definerer også grunnfargene.

Bildet nedenfor viser appen som kjører på en 4.4.2-enhet og en 5.0-enhet. Materialet temaet har blitt brukt for 5.0+ enheter. Andre enheter vil motta holo.light-temaet. Den viser standardtilstanden for begge temaene og brukergrensesnittet forskjellene mellom dem.

Farge- og handlingslinje 

Med materialdesign har det aldri vært enklere å definere appens basisfarger for å passe inn i merkevaren din. Hvis du for eksempel legger til koden nedenfor til temaet ditt, angir du varslingenbar bakgrunn, handlingslinjen bakgrunn og brukergrensesnitt widgets.

 

Resultatene kan være veldig slående og appen kan bli identifisert med bare et blikk. Det er også et nytt sett med Material Design ikoner, som er en annen rask og enkel måte å få et moderne brukergrensesnitt til enhver eksisterende app.

Her er et eksempel på forskjellen ved å bruke Material Design ikoner og definere hovedtema farger:

Bruken av handlingslinjen og fargen er en dominerende funksjon av Material Design, og kan effektivt merke og skille appen din. En måte å gi en konsistent brukeropplevelse på forskjellige API-nivåer er å kopiere disse funksjonene til stiler og temaer beregnet på forskjellige API-nivåer.

Hvis vi for eksempel sammenligner programmet som kjører på en 4.4.2-enhet til en 5,0-enhet:

Som du ser, har de et veldig særegent utseende til dem. For å forbedre dette kan vi bruke de samme Material Design ikonene på API nivåer lavere enn 5.0. Vi kan også utforme handlingslinjen slik at den ligner Material Design-versjonen.

For ikonene kan vi endre bildene i res / meny / meny-main.xml til Material Design ikoner. For handlingslinjen kan vi redigere res / verdiene-v11 / styles.xml filen for å se ut som følgende:

    

Her er en annen titt på de to sammenlignet, etter endringene:

Versjonen som kjører på 4.4.2-enheten blir mer gjenkjennelig som vår søknad og vårt merke. Uten noen vesentlige endringer ser appen seg mer konsistent på de forskjellige APIene, og har en mer moderne følelse av det.

Bruke ikke-støttede funksjoner

Visse funksjoner er eksklusive for Android Lollipop, spesielt aktivitetsturneringer og avslørende animasjoner. Dette betyr ikke nødvendigvis at du må unngå å bruke dem eller opprette en egen app som bruker dem. Du kan sjekke systemversjonen ved kjøring og bare utføre visse API-anrop hvis appen kjører på en passende versjon av Android.

Et eksempel for å sjekke om systemet er 5.0+:

// Sjekk om vi kjører på Android 5.0 eller nyere hvis (Build.VERSION.SDK_INT> = Build.VERSION_CODES.LOLLIPOP) // Ring noen materialdesign-APIer her annet // Implement denne funksjonen uten materialdesign

Holder tidligere temaer

Bare fordi du kan gjøre noe betyr ikke alltid at du skal. Det er absolutt ingenting galt med Holo-temaet som Android har brukt siden Honeycomb. Du kan gi alternative oppsett og temaer og få dem til å gjelde for forskjellige API-nivåer. For eksempel kan du ha Material Design-temaet gjelder for alle enheter med en API på 5,0 og høyere. Holo-temaet gjelder for alle enheter med en API på 3.0 og over. Endelig kan det klassiske temaet brukes på alle enheter under 3.0.

For å gjøre dette, vil du bruke følgende kataloger i prosjektet ditt:

  • res / verdier / (standardplassering)
  • res / verdiene-v11 / (for 3,0 +)
  • res / verdiene-V21 / (for 5,0 +)

I hver katalog kan du plassere en styles.xml fil som vil definere ønsket tema.

Støttebiblioteker    

V7 r21-støttebibliotekene støtter flere widgets og funksjoner fra Material Design.

Theme.AppCompat gjør det mulig å bruke fargepaletten ved å utvide et av AppCompat-temaene. For eksempel, Theme.AppCompat.Light:

Det gir også Material Design widgets for følgende:

  • EditText
  • avmerkingsbokser
  • Spinner
  • Radioknapp
  • SwitchCompat
  • CheckedTextView

V7-støttebiblioteket gir også tilgang til det nye CardView og RecyclerView widgets.

Hvis du holder deg til AppCompat i layoutdesignene dine, er det mulig å lage et enkelt layout som vil opprettholde de samme bildene i flere API-nivåer.

For å bruke V7-støttebiblioteket må du legge til prosjektet ditt. Hvis du bruker Android Studio og Gradle, kan den legges til i avhengighetsdelen i build.gradle fil:

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

Når du inkluderer v7-støttebiblioteket, må du angi minSdkVersion til 7.

Konklusjon

Android 5.0 er en stor utgave. Oppdateringer som ART og skjermvarsler vil få umiddelbar innvirkning. Andre oppdateringer som Material Design, Oversikt og Jobplanlegging vil ta tid for utviklere å implementere og vedta.

Brukerne vil også spille en stor rolle i å forme nær fremtid i Android. Tidligere forsøk på å bringe Android til TV-rommet har ikke blitt godt mottatt. Smart-TVer i det hele tatt har ennå ikke blitt en må-ha-enhet.

Å ha en enhetlig og kjent brukeropplevelse på tvers av flere enheter og skjermer er spennende og etter min mening nødvendig fremover. Suksessen til dette vil imidlertid i siste instans avhenge av adopsjon og brukerbehov.

Google satte scenen på årets Google I / O og med Lollipop skuespillerne nå er samlet. Uansett hvor lenge spillet går, og det får det, kan ingen si at Google ikke har prøvd.