Googles API for CameraX-leverandørutvidelser gjør det mulig for tredjeparts kameraapper å bruke noen av de beste funksjonene til standardkameraappen.
Det er en langvarig vits på Internett som du kan se om noen bruker en Android-telefon dårlig kvalitet på selfiene deres. Mens memene definitivt overdriver ganske mye, er det dessverre litt sannhet bak dem. Android-telefoner har vanligvis vært foran iPhone når det gjelder kameraytelse, i hvert fall på papiret. OEM-er som LG og Samsung har en tendens til å bruke kameraer med flere piksler og større blenderåpninger enn konkurrerende iPhones. Spesifikasjoner er imidlertid ikke alt. Noe av hvorfor Apple kan konkurrere i kameraspillet er på grunn av iOS' programvare. Alle OEM-er, fra Apple til ZTE, bruker litt programvaremagi for å få bilder og videoer til å se bedre ut. Selskapene bruker algoritmer for å redusere støy, justere fargemetning og kontrast, og til og med lysne opp mørke scener, alt for å gjøre sluttresultatene mer behagelige. Dette er, historisk sett, der Android OEM-er har falt til kort med Apple.
Programvareutvikling
I det siste har ting imidlertid begynt å endre seg. Det største eksemplet på denne endringen er sannsynligvis Google og Pixel-serien. Når det gjelder maskinvare, kan Pixel-kameraene virkelig ikke sammenlignes med andre flaggskip. Det er imidlertid programvare der Google utgjør forskjellen. Med funksjoner som Portrait Mode, Night Sight, HDR+ og Super Res Zoom, har Pixels fått et rykte for å ha noen av de beste smarttelefonkameraene på markedet.
Andre Android OEM-er følger Googles ledelse. Samsung, OPPO, Xiaomi, Vivo, OnePlus, etc, har alle introdusert sine egne versjoner av Pixels mer populære kamerafunksjoner, og de har til og med noen unike funksjoner. Med buzzwords som "AI" og "maskinlæring" prøver Android OEM-er å overbevise deg om at programvaren deres er programvaren du vil forbedre bildene og videoene dine. Vi har kommet til et punkt der Android-telefoner virkelig kan konkurrere mot iPhones i alle aspekter av kameraytelse.
Problemet
Dessverre er det fortsatt ett stort unntak: tredjepartsapper. Ditt super-duper 50-kamera flaggskip kan ta fantastiske bilder med den innebygde kameraappen, men bytt til Instagram, Snapchat, eller til og med en tredjeparts kameraapp, og det er i bunn og grunn en garanti for at det du fanger ikke vil se nesten like ut flink. Som om ikke det var nok, taper du også på alle de kule kamerafunksjonene og modusene. Dette er fordi, i motsetning til iOS, har ikke Android egentlig et enhetlig kamerarammeverk. Jada, de grunnleggende funksjonene er der. En tredjepartsapp kan fortsatt ta bilder og videoer og bruke blitsen. Men hva skjer hvis telefonen din har en sekundær sensor for vidvinkel eller tele? Det er mulig at utviklere vil få tilgang til den andre sensoren, men metoden de bruker må være spesifikk for enheten din.
Si at du har en LG V40 (jeg vet, jeg vet, tenk deg at du har det). V40 har tre sensorer: standard, telefoto og ultravid. Den innebygde kameraappen har ingen problemer med å bytte mellom alle disse forskjellige sensorene. Men glem å bruke den ultravide sensoren på Instagram. Nå kan Instagram ta en titt på hvordan LGs kameraapp bruker de forskjellige sensorene og utvikle en måte for brukere å ta vidvinkel- eller zoombilder. Men det ville sannsynligvis bare fungere på LG V40. Selv om Galaxy S10 har de samme tre sensormodusene (standard, telefoto og ultravid), må Instagram-teamet utvikle en annen metode for Samsung.
Legg nå til Huawei, Vivo, OnePlus, Xiaomi, OPPO, Nokia, ZTE, HTC og hvilket som helst annet merke du kan tenke deg til blandingen. Som du kan forestille deg, ville det bli utrolig kjedelig å prøve å utvikle en metode for å få tilgang til de potensielle ekstra sensorene for hver telefon fra hvert merke. Og så må du opprettholde kompatibilitet med alle nåværende og nye telefoner.
Disse begrensningene gjelder også for kamerafunksjoner. Ting som Portrettmodus, Nattsyn og HDR+ trenger enten spesifikke per-enhetsmetoder å bruke, eller er helt utilgjengelige for tredjepartsapper.
Åpenbart, for en app som Instagram, er ikke dette en for stor avtale. Det er ikke deres fokus, og du kan alltid bruke telefonens kameraapp for å ta bildet først. Men hva med dedikerte kameraapper?
Effektene
Åpne Google Play Store og søk etter «kamera». Du kommer til å finne hundrevis av resultater. Selv med forbedringene i førsteparts kameraprogramvare, er tredjeparts kameraapper fortsatt veldig populære. Noen tar sikte på å gi mer tekniske funksjoner som manuell eksponering og fokus (funksjoner som telefonens kameraapp kanskje ikke har). Andre har som mål å gi en konsistent brukeropplevelse på tvers av enhetene dine.
Spesielt av sistnevnte grunn kan Androids kamerafragmentering gjøre det utrolig vanskelig å utvikle og vedlikeholde en allment kompatibel kameraapp. Hvis du ønsker å tilby ekstra funksjoner, hvordan skal du inkludere alle de potensielle funksjonene til alle potensielle førstepartsapper? Hvis du leter etter en konsistent opplevelse, hvordan kan du realistisk garantere at tilgang til vidvinkelsensoren på hver enhet som har den vil fungere?
Svaret er: du kan ikke. Du kan prøve å støtte så mange funksjoner på så mange enheter som mulig, men til slutt kommer det til å være mye arbeid for relativt lite belønning. Det er ikke vanskelig å forestille seg at i det minste noen få utviklere rett og slett har gitt opp å lage en fullverdig kameraapp for Android. Det har faktisk flere.
De skadde
Søk etter kameraapper i Play-butikken. Du vil legge merke til et par ting. En, det er en mye av alternativer. To, de fleste av dem gjør ganske like ting (bruk filtre etterpå og slikt). Tre, de mer avanserte alternativene oppdateres sannsynligvis ikke så ofte. Du kan til og med finne resultater på Google som ikke lenger er i butikken.
Nylig har vi fått et ganske stort eksempel på at noen har sagt opp. Moment bestemte seg for å stoppe utviklingen av sin Pro Camera-app for Android.
Moments Pro Camera-app hadde som mål å bringe avanserte foto- og videofunksjoner til Android. Dette er bare noen av disse funksjonene:
- RGB-histogrammer
- Del fokus
- Manuell kontroll over eksponering, ISO, lukkerhastighet, hvitbalanse
- Fokus topper
- RAW-opptak
- Dynamiske endringer i bildehastighet og oppløsning
Problemet er at mange av disse funksjonene rett og slett ikke fungerer på mange enheter. Å se på Moments funksjonskompatibilitetsliste er som å se på et bilde av et dansegulv. Selv innenfor samme produktlinje er funksjonsstøtten utrolig fragmentert. Etter to år med utvikling har Moment ikke lenger kapasitet til å fortsette utviklingen på appen sin.
Grønn = støttet av Moment Pro Camera. Gul = støttes av enheten, men ikke mitt Moment Pro-kamera. Rød = støttes ikke av enheten. Bildekilde: Moment. Hentet via: 9to5Google.
Løsningen?
Det har gått nesten 12 år siden Android først ble utgitt, men vi kan endelig ha en løsning på kamerafragmenteringen.
Denne løsningen kommer rett fra Google, selv om den ikke er innebygd direkte i Android. I stedet er det en Jetpack støttebibliotek. Hvis du er kjent med å utvikle Android-apper, har du sannsynligvis vært borti AppCompat- og AndroidX-støttebiblioteksuitene. Disse bibliotekene fra Google har som mål å gjøre det enklere for utviklere å opprettholde bakoverkompatibilitet med eldre Android-versjoner, samtidig som de kan introdusere nye funksjoner og stiler.
Et nyere tillegg til Jetpack (slags), er CameraX-biblioteket. I likhet med andre Jetpack-biblioteker, er CameraX sitt mål å gjøre kamerautvikling enklere. I sin mest grunnleggende form pakker CameraX inn Android-er Kamera 2, et API som lar apper undersøke kamerafunksjonene på en enhet, forutsatt at OEM eksponerer disse kamerafunksjonene for API. Brukere kan sjekke hvilke kamerafunksjoner som er utsatt for Camera2 API ved å bruke Camera2 API Probe-applikasjonen og deretter sammenligne det med funksjonene som er tilgjengelige i standardkameraapplikasjonen.
Pris: Gratis.
4.2.
Fordelen med å bruke CameraX som en innpakning for Camera2 API er at den internt løser eventuelle enhetsspesifikke kompatibilitetsproblemer som kan oppstå. Dette alene vil være nyttig for utviklere av kameraapper siden det kan redusere standardkode og tid brukt på å undersøke kameraproblemer. Det er imidlertid ikke alt CameraX kan gjøre.
Mens den første delen stort sett bare er interessant for utviklere, er det en annen del som gjelder både utviklere og sluttbrukere: Leverandørutvidelser. Dette er Googles svar på fragmenteringen av kamerafunksjonen på Android. Enhetsprodusenter kan velge å sende utvidelsesbiblioteker med telefonene sine som lar CameraX (og utviklere og brukere) utnytte innebygde kamerafunksjoner. Si for eksempel at du virkelig liker Samsungs Portrait Mode-effekt, men at du ikke liker selve kameraappen. Hvis Samsung bestemmer seg for å implementere en CameraX Portrait Mode-utvidelse i telefonene sine, vil enhver tredjepartsapp som bruker CameraX kunne bruke Samsungs Portrait Mode. Selvfølgelig er dette ikke bare begrenset til den ene funksjonen. Produsenter kan teoretisk åpne opp alle kamerafunksjonene sine for apper som bruker CameraX.
Dessverre er det en advarsel, som jeg nevnte tidligere: dette er ikke et krav for produsenter. sier Google de vil støtte utvidelser på alle nye og kommende Pixel-enheter, fra og med Pixel 4. sier OPPO de har åpnet skjønnhets- og HDR-modusene sine. Andre OEM-er kan velge å gjøre bare nattmodusene tilgjengelige for CameraX, eller de kan velge å ikke implementere noen utvidelser i det hele tatt. Det er helt opp til produsenten hvilken enhet som støtter hvilke CameraX-utvidelser (hvis noen). Google brukes til å opprettholde en liste over enheter som støtter Vendor Extensions og hvilke kamerafunksjoner de åpnet opp, men de har ikke oppdatert listen de siste månedene. Vi tok kontakt med Google for noen uker siden og spurte dem om de kunne gi en oppdatert liste, men selskapet har ennå ikke svart med en liste. For hva det er verdt, a nylig Google-blogginnlegg sier at enheter fra Samsung, LG, OPPO, Xiaomi og Motorola (på Android 10) gir en viss utvidelse funksjoner, men blogginnlegget spesifiserer ikke nøyaktig hvilke enheter som støttes eller hvilke funksjoner de gi.
Hvis nok produsenter bestemmer seg for å implementere utvidelser, vil Androids tredjeparts kamerascene bli mye lysere. Utviklere trenger ikke å kaste bort tid på å implementere en kamerafunksjon på nytt for hver enhet de kan, siden CameraXs rammeverk vil ta seg av det. Det vil være mindre funksjonsfragmentering siden lignende funksjoner på tvers av enheter vil være tilgjengelige via et felles grensesnitt. Og det er mange flere muligheter.
Alt dette avhenger selvfølgelig av Googles evne til å overbevise produsenter om å implementere CameraX Vendor Extension-biblioteker fremover. Med mindre CameraX er bredt implementert, vil det bare legge til den nåværende fragmenteringen. Personlig er jeg imidlertid håpefull. Google kan være veldig overbevisende når det vil være det, og det virker som det legges mye arbeid i CameraX. Det er spennende å se en mulig løsning på Androids kameraproblemer i horisonten, og jeg ser frem til å se hvordan CameraX vil forbedre og utvide seg over tid.
Hva synes du om CameraX? Vil Google lykkes med å lage en enhetlig kameraopplevelse for Android?