Googlov API CameraX omogoča aplikacijam uporabo najboljših funkcij fotoaparata iz osnovne tovarne

Googlov API za razširitve ponudnika CameraX omogoča aplikacijam za kamere tretjih oseb uporabo nekaterih najboljših funkcij standardne aplikacije za kamere.

Na spletu obstaja že dolgotrajna šala, da lahko ugotovite, ali nekdo uporablja telefon Android slaba kakovost njihovih selfijev. Medtem ko memi vsekakor precej pretiravajo, je za njimi na žalost nekaj resnice. Telefoni Android so bili običajno pred iPhoni glede zmogljivosti fotoaparata, vsaj na papirju. Proizvajalci originalne opreme, kot sta LG in Samsung, običajno uporabljajo kamere z več slikovnimi pikami in večjimi zaslonkami kot konkurenčni iPhoni. Vendar specifikacije niso vse. Apple lahko tekmuje v igri s kamero delno zaradi programske opreme iOS. Vsi proizvajalci originalne opreme, od Applea do ZTE, uporabljajo nekaj čarovnije programske opreme za izboljšanje videza fotografij in videoposnetkov. Podjetja uporabljajo algoritme za zmanjšanje šuma, prilagajanje barvne nasičenosti in kontrasta ter celo posvetlitev temnih prizorov, da bi bili končni rezultati bolj prijetni. To je zgodovinsko gledano, kjer proizvajalci originalne opreme za Android niso uspeli Appleu.

Razvoj programske opreme

V zadnjem času pa so se stvari začele spreminjati. Največji primer te spremembe sta verjetno Google in linija Pixel. Kar zadeva strojno opremo, se kamere Pixel res ne morejo primerjati z drugimi vodilnimi modeli. Programska oprema je tista, kjer Google naredi razliko. S funkcijami, kot so Portrait Mode, Night Sight, HDR+ in Super Res Zoom, so si Pixels prislužili sloves, da imajo nekatere od najboljše kamere za pametne telefone na trgu.

Drugi proizvajalci originalne opreme za Android sledijo Googlu. Samsung, OPPO, Xiaomi, Vivo, OnePlus itd. so vsi predstavili svoje različice bolj priljubljenih funkcij fotoaparata Pixel in imajo celo nekaj lastnih edinstvenih funkcij. Z modnimi besedami, kot sta "AI" in "strojno učenje", vas proizvajalci originalne opreme za Android poskušajo prepričati, da je njihova programska oprema programska oprema, s katero želite izboljšati svoje fotografije in videoposnetke. Prišli smo do točke, ko lahko telefoni Android resnično tekmujejo z iPhoni v vseh vidikih delovanja kamere.

Težava

Na žalost še vedno obstaja ena velika izjema: aplikacije tretjih oseb. Vaš vrhunski vodilni model s 50 kamerami lahko posname neverjetne fotografije z vgrajeno aplikacijo za kamero, vendar preklopite na Instagram, Snapchat ali celo aplikacija za kamero drugega proizvajalca in je v bistvu zagotovilo, da tisto, kar posnamete, ne bo videti niti približno dobro. Kot da to ne bi bilo dovolj, izgubite tudi vse odlične funkcije in načine fotoaparata. To je zato, ker za razliko od iOS-a Android v resnici nima enotnega okvira kamere. Seveda, osnovne funkcije so tam. Aplikacija tretje osebe lahko še vedno posname fotografije in videoposnetke ter uporablja bliskavico. Toda kaj se zgodi, če ima vaš telefon sekundarni senzor za širokokotni ali teleobjektiv? Možno je, da bodo razvijalci lahko dostopali do tega drugega senzorja, vendar bo metoda, ki jo uporabljajo, morala biti specifična za vašo napravo.

Recimo, da imate LG V40 (vem, vem, samo predstavljajte si, da ga imate). V40 ima tri senzorje: standardni, telefoto in ultraširoki. Vgrajena aplikacija za kamero nima težav s preklapljanjem med vsemi temi različnimi senzorji. Toda pozabite na uporabo ultraširokega senzorja na Instagramu. Zdaj bi lahko Instagram pogledal, kako LG-jeva aplikacija za kamero uporablja različne senzorje in razvil način, kako lahko uporabniki posnamejo širokokotne ali zoom posnetke. Ampak to bi verjetno delovalo samo na LG V40. Čeprav ima Galaxy S10 enake tri načine senzorjev (standardni, telefoto in ultraširoki), bi ekipa Instagrama morala razviti drugo metodo za Samsung.

Zdaj dodajte Huawei, Vivo, OnePlus, Xiaomi, OPPO, Nokia, ZTE, HTC in katero koli drugo znamko, ki si jo lahko omislite. Kot si lahko predstavljate, bi poskus razviti metodo za dostop le do potencialnih dodatnih senzorjev za vsak telefon vsake znamke postal neverjetno dolgočasen. In potem morate ohraniti združljivost z vsemi trenutnimi in novimi telefoni.

Te omejitve veljajo tudi za funkcije fotoaparata. Stvari, kot so portretni način, nočni vid in HDR+, potrebujejo posebne metode za vsako napravo ali pa so popolnoma nedostopne aplikacijam tretjih oseb.

Očitno za aplikacijo, kot je Instagram, to ni prevelik posel. To ni njihov fokus in vedno lahko uporabite aplikacijo kamere v telefonu, da najprej posnamete posnetek. Kaj pa namenske aplikacije za kamero?

Učinki

Odprite trgovino Google Play in poiščite »kamera«. Našli boste na stotine rezultatov. Kljub izboljšavam programske opreme za kamere drugih proizvajalcev so aplikacije za kamere drugih proizvajalcev še vedno zelo priljubljene. Nekateri želijo zagotoviti več tehničnih funkcij, kot sta ročna osvetlitev in ostrenje (funkcije, ki jih aplikacija za kamero v telefonu morda nima). Drugi želijo zagotoviti dosleden uporabniški vmesnik v vaših napravah.

Zlasti zaradi slednjega razloga lahko Androidova razdrobljenost kamere izjemno oteži razvoj in vzdrževanje široko združljive aplikacije za kamero. Če želite zagotoviti dodatne funkcije, kako boste vključili vse potencialne funkcije vseh potencialnih aplikacij prvega proizvajalca? Če iščete dosledno izkušnjo, kako lahko realno zagotovite, da bo dostop do širokokotnega senzorja na vsaki napravi, ki ga ima, deloval?

Odgovor je: ne morete. Lahko poskusite podpirati čim več funkcij na čim več napravah, a na koncu bo to veliko dela za razmeroma malo nagrade. Ni si težko predstavljati, da je vsaj nekaj razvijalcev preprosto obupalo nad izdelavo aplikacije za kamero s polnimi funkcijami za Android. Pravzaprav jih je več.

Žrtve

Poiščite aplikacije za kamero v Trgovini Play. Opazili boste nekaj stvari. Ena, obstaja a veliko možnosti. Drugič, večina jih počne precej podobne stvari (uporablja filtre naknadno in podobno). Tretjič, naprednejše možnosti se verjetno ne posodabljajo tako pogosto. Morda boste v Googlu celo našli rezultate, ki jih ni več v trgovini.

Nedavno smo dobili precej velik primer nekoga, ki je odnehal. Moment se je odločil prenehati z razvojem svoje aplikacije Pro Camera za Android.

Momentova aplikacija Pro Camera je bila namenjena prenosu naprednih funkcij za fotografije in video v Android. To je le nekaj teh funkcij:

  • RGB histogrami
  • Razdeljen fokus
  • Ročni nadzor nad osvetlitvijo, ISO, hitrostjo zaklopa, ravnovesjem beline
  • Izostritev
  • Zajem RAW
  • Dinamične spremembe hitrosti sličic in ločljivosti
Posnetki zaslona kamere Moment Pro. prek: 9to5Google

Težava je v tem, da veliko teh funkcij preprosto ne deluje na številnih napravah. Pogled na seznam združljivosti funkcij Moment je kot gledanje slike plesišča. Celo znotraj iste linije izdelkov je podpora za funkcije neverjetno razdrobljena. Po dveh letih razvoja Moment nima več zmogljivosti za nadaljevanje razvoja svoje aplikacije.

Zelena = podpira kamera Moment Pro. Rumena = podpira naprava, ne pa tudi moja kamera Moment Pro. Rdeča = naprava ne podpira. Vir slike: Trenutek. Pridobljeno prek: 9to5Google.

Rešitev?

Od prve izdaje Androida je minilo že skoraj 12 let, a morda končno imamo rešitev za razdrobljenost kamere.

Ta rešitev prihaja neposredno iz Googla, čeprav ni vgrajena neposredno v Android. Namesto tega je a Podporna knjižnica Jetpack. Če ste seznanjeni z razvojem aplikacij za Android, ste verjetno že naleteli na zbirke podpornih knjižnic AppCompat in AndroidX. Te Googlove knjižnice želijo razvijalcem olajšati vzdrževanje združljivosti za nazaj s starejšimi različicami Androida, hkrati pa lahko še vedno uvajajo nove funkcije in sloge.

Novejši dodatek Jetpacku (nekako) je knjižnica CameraX. Podobno kot pri drugih knjižnicah Jetpack je cilj CameraX olajšati razvoj kamere. V svoji najosnovnejši obliki CameraX ovija Android Kamera2, API, ki aplikacijam omogoča, da preizkusijo funkcije kamere v napravi, pod pogojem, da OEM te funkcije kamere izpostavi API-ju. Uporabniki lahko z aplikacijo Camera2 API Probe preverijo, katere funkcije kamere so izpostavljene API-ju Camera2, nato pa to primerjajo s funkcijami, ki so na voljo v osnovni aplikaciji za kamero.

Camera2 API ProbeRazvijalec: March Media Lab

Cena: brezplačno.

4.2.

Prenesi

Prednost uporabe CameraX kot ovoja za API Camera2 je, da interno rešuje morebitne težave z združljivostjo, specifične za napravo. Samo to bo uporabno za razvijalce aplikacij za kamero, saj lahko zmanjša standardno kodo in čas, porabljen za raziskovanje težav s kamero. To pa ni vse, kar CameraX zmore.

Medtem ko je ta prvi del večinoma zanimiv samo za razvijalce, obstaja še en del, ki velja tako za razvijalce kot za končne uporabnike: Razširitve prodajalca. To je Googlov odgovor na razdrobljenost funkcij kamere v sistemu Android. Proizvajalci naprav se lahko odločijo za pošiljanje knjižnic razširitev s svojimi telefoni, ki omogočajo CameraX (ter razvijalcem in uporabnikom) izkoriščanje izvornih funkcij kamere. Recimo, da vam je res všeč Samsungov učinek Portrait Mode, vendar vam ni všeč sama aplikacija kamere. Če se Samsung odloči za implementacijo razširitve CameraX Portrait Mode v svoje telefone, bo katera koli aplikacija tretje osebe, ki uporablja CameraX, lahko uporabljala Samsungov Portrait Mode. Očitno to ni omejeno samo na eno funkcijo. Proizvajalci lahko teoretično odprejo katero koli funkcijo svoje kamere aplikacijam, ki uporabljajo CameraX.

Na žalost obstaja opozorilo, ki sem ga omenil prej: to ni zahteva za proizvajalce. Google pravi podpirale bodo razširitve na vseh novih in prihajajočih napravah Pixel, začenši s Pixel 4. OPPO pravi odprli so svoja načina Beauty in HDR. Drugi proizvajalci originalne opreme bi se lahko odločili, da bi CameraX dali na voljo samo svoje nočne načine, ali pa bi se odločili, da sploh ne bi izvajali nobenih razširitev. Od proizvajalca je popolnoma odvisno, katera naprava podpira katere razširitve CameraX (če obstajajo). Google uporablja za vzdrževanje seznama naprav ki podpirajo razširitve prodajalcev in katere funkcije kamere so odprle, vendar seznama niso posodobili zadnjih nekaj mesecev. Pred nekaj tedni smo se obrnili na Google in jih prosili, ali lahko zagotovijo posodobljen seznam, vendar podjetje še ni odgovorilo s seznamom. Kolikor je vredno, a nedavna objava v spletnem dnevniku Google navaja, da naprave Samsung, LG, OPPO, Xiaomi in Motorola (v sistemu Android 10) ponujajo nekaj razširitev funkcije, vendar objava v spletnem dnevniku ne določa natančno, katere naprave so podprte ali katere funkcije imajo zagotoviti.

Če se bo dovolj proizvajalcev odločilo za implementacijo razširitev, bo Androidova scena kamer tretjih oseb veliko svetlejša. Razvijalcem ne bo treba izgubljati časa s ponovno implementacijo funkcije kamere za vsako napravo, ki jo morebiti lahko, saj bo ogrodje CameraX poskrbelo za to. Razdrobljenosti funkcij bo manj, saj bodo podobne funkcije v napravah dostopne prek skupnega vmesnika. In obstaja še veliko več možnosti.


Seveda je vse odvisno od Googlove zmožnosti, da prepriča proizvajalce, da v prihodnje implementirajo knjižnice razširitev prodajalca CameraX. Če CameraX ne bo široko implementiran, bo le še povečal trenutno razdrobljenost. Osebno pa upam. Google je lahko zelo prepričljiv, kadar hoče, in zdi se, da je v CameraX vloženega veliko dela. Razburljivo je videti možno rešitev za Androidove težave s kamero na obzorju in veselim se, da bom videl, kako se bo CameraX sčasoma izboljšal in razširil.

Kaj menite o CameraX? Ali bo Googlu uspelo ustvariti enotno izkušnjo kamere za Android?