Rozhraní Google CameraX API umožňuje aplikacím používat nejlepší funkce fotoaparátu

Rozhraní API pro rozšíření dodavatele CameraX společnosti Google umožňuje aplikacím fotoaparátů třetích stran využívat některé z nejlepších funkcí aplikace pro fotoaparáty.

Na internetu existuje dlouholetý vtip, podle kterého poznáte, zda někdo používá telefon Android špatná kvalita jejich selfie. I když memy rozhodně dost přehánějí, je za nimi bohužel kus pravdy. Telefony s Androidem obvykle předstihly iPhony ve výkonu fotoaparátu, alespoň na papíře. OEM výrobci jako LG a Samsung mají tendenci používat fotoaparáty s více pixely a větší clonou než konkurenční iPhony. Specifikace však nejsou všechno. Část toho, proč může Apple soutěžit ve hře s fotoaparátem, je kvůli softwaru iOS. Všichni výrobci OEM, od Applu po ZTE, používají určitá softwarová kouzla, aby fotografie a videa vypadaly lépe. Společnosti používají algoritmy ke snížení šumu, vyladění sytosti barev a kontrastu a dokonce i zesvětlení tmavých scén, to vše proto, aby byly konečné výsledky příjemnější. To je historicky místo, kde výrobci Android OEM zaostávají za Apple.

Vývoj softwaru

V poslední době se však věci začaly měnit. Největším příkladem této změny je pravděpodobně Google a řada Pixel. Po hardwarové stránce se fotoaparáty Pixel opravdu nemohou srovnávat s jinými vlajkovými loděmi. Software je to, kde Google dělá rozdíl. Díky funkcím, jako je režim Portrét, Noční vidění, HDR+ a Super Res Zoom, si Pixely získaly reputaci díky svým nejlepší fotoaparáty pro chytré telefony na trhu.

Další výrobci Android OEM následují příklad společnosti Google. Samsung, OPPO, Xiaomi, Vivo, OnePlus atd., všechny představily své vlastní verze populárnějších funkcí fotoaparátu Pixel a dokonce mají některé vlastní jedinečné funkce. Pomocí módních slov jako „AI“ a „strojové učení“ se vás výrobci Android OEM snaží přesvědčit, že jejich software je software, který chcete vylepšit své fotografie a videa. Dostali jsme se do bodu, kdy telefony Android mohou skutečně konkurovat iPhonům ve všech aspektech výkonu fotoaparátu.

Problém

Bohužel stále existuje jedna velká výjimka: aplikace třetích stran. Vaše super-duper vlajková loď s 50 fotoaparáty může pořizovat úžasné fotografie pomocí vestavěné aplikace fotoaparátu, ale přepněte na Instagram, Snapchat, nebo dokonce aplikace pro fotoaparáty třetí strany, a to je v podstatě záruka, že to, co zachytíte, nebude vypadat skoro jako dobrý. Jako by to nestačilo, přijdete také o všechny skvělé funkce a režimy fotoaparátu. Je to proto, že na rozdíl od iOS nemá Android ve skutečnosti jednotný rámec fotoaparátu. Jasně, základní funkce tam jsou. Aplikace třetí strany může stále pořizovat fotografie a videa a používat blesk. Co se ale stane, když má váš telefon sekundární snímač pro širokoúhlý nebo teleobjektiv? Je možné, že vývojáři budou mít přístup k tomuto druhému senzoru, ale způsob, který použijí, bude muset být specifický pro vaše zařízení.

Řekněme, že máte LG V40 (já vím, já vím, jen si představte, že máte). V40 má tři snímače: standardní, teleobjektiv a ultraširoký. Vestavěná aplikace fotoaparátu nemá problém přepínat mezi všemi těmito různými senzory. Na používání ultraširokého senzoru na Instagramu ale zapomeňte. Nyní by se Instagram mohl podívat na to, jak aplikace fotoaparátu LG využívá různé senzory, a vyvinout způsob, jak uživatelé pořizovat širokoúhlé nebo zoomové snímky. To by ale fungovalo asi jen na LG V40. Přestože má Galaxy S10 stejné tři režimy snímače (standardní, teleobjektiv a ultraširoký), tým Instagramu by musel pro Samsung vyvinout jinou metodu.

Nyní do směsi přidejte Huawei, Vivo, OnePlus, Xiaomi, OPPO, Nokia, ZTE, HTC a jakoukoli další značku, na kterou si vzpomenete. Jak si dokážete představit, pokusit se vyvinout metodu pro přístup pouze k potenciálním dalším senzorům pro každý telefon od každé značky by bylo neuvěřitelně únavné. A pak musíte zachovat kompatibilitu se všemi současnými i novými telefony.

Tato omezení platí také pro funkce fotoaparátu. Věci jako Portrétní režim, Noční vidění a HDR+ buď vyžadují specifické metody pro jednotlivá zařízení, nebo jsou zcela nedostupné pro aplikace třetích stran.

Je zřejmé, že pro aplikaci, jako je Instagram, to není příliš velký problém. Není to jejich zaměření a vždy můžete použít aplikaci fotoaparátu ve svém telefonu a pořídit snímek jako první. Ale co speciální aplikace pro fotoaparáty?

Účinky

Otevřete Obchod Google Play a vyhledejte „fotoaparát“. Najdete stovky výsledků. I přes vylepšení softwaru pro fotoaparáty první strany jsou aplikace fotoaparátů třetích stran stále velmi oblíbené. Některé mají za cíl poskytnout techničtější funkce, jako je manuální expozice a ostření (funkce, které aplikace fotoaparátu vašeho telefonu nemusí mít). Jiní mají za cíl poskytovat konzistentní uživatelské prostředí napříč vašimi zařízeními.

Zejména z toho druhého důvodu může fragmentace fotoaparátu systému Android neuvěřitelně ztížit vývoj a údržbu široce kompatibilní aplikace pro fotoaparáty. Pokud chcete poskytnout další funkce, jak zahrnete všechny potenciální funkce všech potenciálních aplikací první strany? Pokud hledáte konzistentní zážitek, jak můžete realisticky zaručit, že přístup k širokoúhlému snímači na každém zařízení, které jej má, bude fungovat?

Odpověď zní: nemůžete. Můžete se pokusit podporovat co nejvíce funkcí na co největším počtu zařízení, ale nakonec to bude hodně práce za relativně malou odměnu. Není těžké si představit, že alespoň několik vývojářů jednoduše rezignovalo na vytvoření plně vybavené aplikace pro fotoaparáty pro Android. Ve skutečnosti má několik.

Oběti

Vyhledejte aplikace pro fotoaparát v Obchodě Play. Pár věcí si všimnete. Jeden, existují a hodně možností. Zadruhé, většina z nich dělá dost podobné věci (aplikuje filtry dodatečně a podobně). Zatřetí, pokročilejší možnosti se pravděpodobně neaktualizují tak často. Na Googlu můžete dokonce najít výsledky, které již v obchodě nejsou.

Nedávno jsme dostali docela zásadní příklad toho, že někdo volal, že končí. Společnost Moment se rozhodla ukončit vývoj své aplikace Pro Camera pro Android.

Aplikace Pro Camera společnosti Moment měla za cíl přinést pokročilé funkce pro fotografie a video do Androidu. Toto jsou jen některé z těchto funkcí:

  • RGB histogramy
  • Rozdělit zaměření
  • Manuální ovládání expozice, ISO, rychlosti závěrky, vyvážení bílé
  • Špičkování zaostření
  • Snímání RAW
  • Dynamické změny snímkové frekvence a rozlišení
Snímky obrazovky fotoaparátu Moment Pro. Přes: 9to5Google

Problém je v tom, že spousta těchto funkcí na spoustě zařízení prostě nefunguje. Pohled na seznam kompatibility funkcí Moment je jako pohled na obrázek tanečního parketu. I v rámci stejné produktové řady je podpora funkcí neuvěřitelně roztříštěná. Po dvou letech vývoje už Moment nemá kapacitu pokračovat ve vývoji své aplikace.

Zelená = podporována fotoaparátem Moment Pro Camera. Žlutá = podporováno zařízením, ale ne mojí kamerou Moment Pro. Červená = není podporováno zařízením. Zdroj obrázku: Moment. Načteno prostřednictvím: 9to5Google.

Řešení?

Od prvního vydání Androidu uběhlo téměř 12 let, ale možná se konečně dočkáme řešení fragmentace fotoaparátu.

Toto řešení pochází přímo od společnosti Google, i když není zabudováno přímo do systému Android. Místo toho je to a Knihovna podpory Jetpack. Pokud jste obeznámeni s vývojem aplikací pro Android, pravděpodobně jste narazili na sady knihoven podpory AppCompat a AndroidX. Tyto knihovny od společnosti Google mají za cíl usnadnit vývojářům zachování zpětné kompatibility se staršími verzemi Androidu a zároveň být schopni zavádět nové funkce a styly.

Novějším přírůstkem do Jetpacku (takového druhu) je knihovna CameraX. Podobně jako u jiných knihoven Jetpack je cílem CameraX usnadnit vývoj fotoaparátu. Ve své nejzákladnější podobě CameraX obaluje Android Fotoaparát2, rozhraní API, které umožňuje aplikacím zkoumat funkce fotoaparátu na zařízení za předpokladu, že výrobce OEM vystaví tyto funkce fotoaparátu rozhraní API. Uživatelé mohou zkontrolovat, jaké funkce kamery jsou vystaveny rozhraní Camera2 API pomocí aplikace Camera2 API Probe a poté to porovnat s funkcemi dostupnými v aplikaci pro fotoaparáty.

Camera2 API ProbeVývojář: March Media Lab

Cena: Zdarma.

4.2.

Stažení

Výhodou použití CameraX jako obalu pro Camera2 API je to, že interně řeší jakékoli problémy s kompatibilitou specifické pro zařízení, které mohou nastat. To samo o sobě bude užitečné pro vývojáře aplikací pro fotoaparáty, protože to může snížit standardní kód a čas strávený zkoumáním problémů s fotoaparátem. To však není vše, co CameraX umí.

Zatímco tato první část je většinou zajímavá pouze pro vývojáře, existuje další část, která se vztahuje jak na vývojáře, tak na koncové uživatele: Rozšíření dodavatele. Toto je odpověď společnosti Google na fragmentaci funkcí fotoaparátu v systému Android. Výrobci zařízení se mohou rozhodnout dodávat se svými telefony knihovny rozšíření, které umožňují CameraX (a vývojářům a uživatelům) využívat nativní funkce fotoaparátu. Řekněme například, že se vám opravdu líbí efekt režimu Portrét od Samsungu, ale nelíbí se vám samotná aplikace fotoaparátu. Pokud se společnost Samsung rozhodne implementovat do svých telefonů rozšíření CameraX Portrait Mode, jakákoli aplikace třetí strany využívající CameraX bude moci používat režim Portrét společnosti Samsung. Je zřejmé, že se to neomezuje pouze na jednu funkci. Výrobci mohou teoreticky zpřístupnit jakékoli funkce fotoaparátu aplikacím využívajícím CameraX.

Bohužel je zde upozornění, které jsem již zmínil: toto není požadavek výrobců. Google říká budou podporovat rozšíření na všech nových a připravovaných zařízeních Pixel, počínaje Pixelem 4. říká OPPO otevřeli své režimy Beauty a HDR. Ostatní výrobci OEM se mohli rozhodnout zpřístupnit CameraX pouze své noční režimy, nebo se mohli rozhodnout neimplementovat žádná rozšíření. Je zcela na výrobci, které zařízení podporuje která rozšíření CameraX (pokud existují). Google slouží k udržování seznamu zařízení které podporují rozšíření Vendor Extensions a jaké funkce fotoaparátu otevřely, ale seznam již několik měsíců neaktualizovali. Před několika týdny jsme oslovili Google a požádali jsme je, zda by nám mohli poskytnout aktualizovaný seznam, ale společnost zatím žádným seznamem neodpověděla. Za to, co stojí za to, a nedávný příspěvek na blogu Google uvádí, že zařízení od společností Samsung, LG, OPPO, Xiaomi a Motorola (na Androidu 10) poskytují určité rozšíření funkce, ale příspěvek na blogu přesně neuvádí, která zařízení jsou podporována ani jaké funkce poskytnout.

Pokud se dostatečný počet výrobců rozhodne implementovat rozšíření, bude scéna fotoaparátu třetích stran Androidu mnohem jasnější. Vývojáři nebudou muset ztrácet čas reimplementací funkce fotoaparátu pro každé zařízení, které mohou, protože framework CameraX se o to postará. Dojde k menší fragmentaci funkcí, protože podobné funkce napříč zařízeními budou přístupné prostřednictvím společného rozhraní. A možností je mnohem více.


To vše samozřejmě závisí na schopnosti Googlu přesvědčit výrobce, aby implementovali knihovny CameraX Vendor Extension do budoucna. Pokud nebude CameraX široce implementován, bude to jen přispívat k současné fragmentaci. Osobně však doufám. Google dokáže být velmi přesvědčivý, když chce, a zdá se, že do CameraX je potřeba hodně práce. Je vzrušující vidět možné řešení problémů s fotoaparátem Androidu na obzoru a těším se na to, jak se bude CameraX časem zlepšovat a rozšiřovat.

Co si myslíte o CameraX? Podaří se Googlu vytvořit jednotný fotoaparát pro Android?