CameraX API на Google позволява на приложенията да използват най-добрите стандартни функции на камерата

API за разширения на доставчици на CameraX на Google дава възможност на приложения за камера на трети страни да използват някои от най-добрите функции на стандартното приложение за камера.

В интернет има отдавнашна шега, че можете да разберете дали някой използва телефон с Android по лошо качество на техните селфита. Въпреки че мемовете определено преувеличават доста, за съжаление има малко истина зад тях. Телефоните с Android обикновено изпреварват iPhone по отношение на производителността на камерата, поне на хартия. OEM производители като LG и Samsung са склонни да използват камери с повече пиксели и по-големи отвори в сравнение с конкурентните iPhone. Спецификациите обаче не са всичко. Част от причините, поради които Apple може да се конкурира в играта с камера, е заради софтуера на iOS. Всички OEM производители, от Apple до ZTE, използват някаква софтуерна магия, за да направят снимките и видеоклиповете да изглеждат по-добре. Компаниите използват алгоритми за намаляване на шума, настройка на наситеността на цветовете и контраста и дори осветяване на тъмните сцени, всичко това, за да направят крайните резултати по-приятни. Исторически това е мястото, където производителите на оригинално оборудване за Android са изостанали от Apple.

Софтуерни разработки

Съвсем наскоро обаче нещата започнаха да се променят. Най-големият пример за тази промяна вероятно е Google и Pixel гамата. По отношение на хардуера, камерите на Pixel наистина не могат да се сравняват с други флагмани. Софтуерът обаче е мястото, където Google прави разликата. С функции като Portrait Mode, Night Sight, HDR+ и Super Res Zoom, Pixels са си спечелили репутацията, че имат някои от най-добрите камери за смартфони на пазара.

Други OEM производители на Android следват примера на Google. Samsung, OPPO, Xiaomi, Vivo, OnePlus и т.н. всички представиха свои собствени версии на по-популярните функции на камерата на Pixel и дори имат някои свои собствени уникални характеристики. С модни думи като „AI“ и „машинно обучение“ OEM производителите на Android се опитват да ви убедят, че техният софтуер е софтуерът, който искате да подобрите вашите снимки и видеоклипове. Стигнахме до момент, в който телефоните с Android могат наистина да се конкурират с iPhone във всички аспекти на производителността на камерата.

Проблемът

За съжаление, все още има едно голямо изключение: приложения на трети страни. Вашият супер супер флагман с 50 камери може да прави невероятни снимки с вграденото приложение за камера, но преминете към Instagram, Snapchat или дори приложение за камера на трета страна и това е по същество гаранция, че това, което заснемете, няма да изглежда почти така добре. Сякаш това не е достатъчно, губите и всички готини функции и режими на камерата. Това е така, защото за разлика от iOS, Android всъщност няма унифицирана рамка на камерата. Разбира се, основните функции са налице. Приложение на трета страна все още може да прави снимки и видеоклипове и да използва светкавицата. Но какво се случва, ако телефонът ви има вторичен сензор за широкоъгълен или телеобектив? Възможно е разработчиците да имат достъп до този втори сензор, но методът, който използват, трябва да бъде специфичен за вашето устройство.

Да кажем, че имате LG V40 (знам, знам, само си представете, че имате). V40 има три сензора: стандартен, телефото и ултраширок. Вграденото приложение за камера няма проблем с превключването между всички тези различни сензори. Но забравете за използването на ултраширокия сензор в Instagram. Сега Instagram може да разгледа как приложението за камера на LG използва различните сензори и да разработи начин потребителите да правят широкоъгълни или увеличени снимки. Но това вероятно ще работи само на LG V40. Въпреки че Galaxy S10 има същите три сензорни режима (стандартен, телефото и ултраширок), екипът на Instagram ще трябва да разработи друг метод за Samsung.

Сега добавете Huawei, Vivo, OnePlus, Xiaomi, OPPO, Nokia, ZTE, HTC и всяка друга марка, за която се сетите. Както можете да си представите, опитът да се разработи метод за достъп само до потенциалните допълнителни сензори за всеки телефон от всяка марка би станал невероятно досаден. И тогава трябва да поддържате съвместимост с всички текущи и нови телефони.

Тези ограничения се отнасят и за функциите на камерата. Неща като портретен режим, нощно виждане и HDR+ или се нуждаят от специфични методи за всяко устройство за използване, или са напълно недостъпни за приложения на трети страни.

Очевидно за приложение като Instagram това не е голяма работа. Това не е техният фокус и винаги можете да използвате приложението за камера на телефона си, за да направите снимка първи. Но какво да кажем за специални приложения за камера?

Ефектите

Отворете Google Play Store и потърсете „камера“. Ще намерите стотици резултати. Дори с подобренията в софтуера на камерата на първи страни, приложенията за камера на трети страни все още са много популярни. Някои имат за цел да осигурят повече технически функции като ръчна експозиция и фокус (функции, които приложението за камера на вашия телефон може да няма). Други имат за цел да осигурят последователен UX на вашите устройства.

Особено поради последната причина, фрагментацията на камерата на Android може да направи невероятно трудно разработването и поддържането на широко съвместимо приложение за камера. Ако искате да предоставите допълнителни функции, как ще включите всички потенциални функции на всички потенциални приложения на първи страни? Ако търсите последователно изживяване, как можете реалистично да гарантирате, че достъпът до широкоъгълния сензор на всяко устройство, което го има, ще работи?

Отговорът е: не можете. Можете да опитате да поддържате възможно най-много функции на възможно най-много устройства, но в крайна сметка това ще бъде много работа за сравнително малко възнаграждение. Не е трудно да си представим, че поне няколко разработчици просто са се отказали от създаването на пълнофункционално приложение за камера за Android. Всъщност няколко имат.

Жертвите

Потърсете приложения за камера в Play Store. Ще забележите няколко неща. Едно, има a много на опциите. Второ, повечето от тях правят доста подобни неща (прилагат филтри след факта и други подобни). Трето, по-разширените опции вероятно не се актуализират толкова често. Може дори да намерите резултати в Google, които вече не са в магазина.

Наскоро получихме доста важен пример за някой, който се отказва. Moment реши да спре разработката на своето приложение Pro Camera за Android.

Приложението Pro Camera на Moment имаше за цел да внесе разширени функции за снимки и видео в Android. Това са само някои от тези характеристики:

  • RGB хистограми
  • Разделен фокус
  • Ръчно управление на експозиция, ISO, скорост на затвора, баланс на бялото
  • Пикиране на фокуса
  • RAW заснемане
  • Динамични промени в честотата на кадрите и резолюцията
Екранни снимки на Moment Pro Camera. Чрез: 9to5Google

Проблемът е, че много от тези функции просто не работят на много устройства. Разглеждането на списъка за съвместимост на функциите на Moment е като гледане на снимка на дансинг. Дори в една и съща продуктова линия поддръжката на функции е невероятно фрагментирана. След две години разработка, Moment вече няма капацитет да продължи разработката на своето приложение.

Зелено = поддържа се от Moment Pro Camera. Жълто = поддържа се от устройството, но не и от моята камера Moment Pro. Червено = не се поддържа от устройството. Източник на изображението: Момент. Извлечено чрез: 9to5Google.

Решението?

Изминаха почти 12 години от първото пускане на Android, но най-накрая може да имаме решение за фрагментирането на камерата.

Това решение идва направо от Google, въпреки че не е вградено директно в Android. Вместо това, това е a Библиотека за поддръжка на Jetpack. Ако сте запознати с разработването на приложения за Android, вероятно сте се сблъсквали с библиотечните пакети за поддръжка на AppCompat и AndroidX. Тези библиотеки от Google имат за цел да улеснят разработчиците да поддържат обратна съвместимост с по-стари версии на Android, като същевременно могат да въвеждат нови функции и стилове.

По-ново допълнение към Jetpack (нещо като) е библиотеката CameraX. Подобно на други библиотеки на Jetpack, целта на CameraX е да улесни разработката на камера. В най-основната си форма CameraX обгръща Android Камера2, API, който позволява на приложенията да изследват функциите на камерата на дадено устройство, при условие че OEM излага тези функции на камерата на API. Потребителите могат да проверят какви функции на камерата са изложени на Camera2 API с помощта на приложението Camera2 API Probe и след това да ги сравнят с функциите, налични в стандартното приложение за камера.

Camera2 API сондаРазработчик: March Media Lab

Цена: Безплатно.

4.2.

Изтегли

Ползата от използването на CameraX като обвивка за Camera2 API е, че вътрешно разрешава всякакви проблеми със съвместимостта, специфични за устройството, които могат да възникнат. Само това ще бъде полезно за разработчиците на приложения за камери, тъй като може да намали шаблонния код и времето, прекарано в проучване на проблеми с камерата. Това обаче не е всичко, което CameraX може да направи.

Докато тази първа част е интересна най-вече само за разработчиците, има друга част, която се отнася както за разработчиците, така и за крайните потребители: Разширения на доставчика. Това е отговорът на Google на фрагментацията на функцията на камерата на Android. Производителите на устройства могат да изберат да доставят библиотеки с разширения със своите телефони, които позволяват на CameraX (и разработчици и потребители) да използват собствените функции на камерата. Например, кажете, че наистина харесвате ефекта Portrait Mode на Samsung, но не харесвате самото приложение за камера. Ако Samsung реши да внедри разширение CameraX Portrait Mode в своите телефони, всяко приложение на трета страна, използващо CameraX, ще може да използва Portrait Mode на Samsung. Очевидно това не се ограничава само до тази функция. Производителите могат теоретично да отворят всяка от функциите на своите камери за приложения, използващи CameraX.

За съжаление има едно предупреждение, което споменах по-рано: това не е изискване за производителите. Google казва те ще поддържат разширения на всички нови и предстоящи устройства Pixel, като се започне с Pixel 4. OPPO казва те са отворили своите режими Beauty и HDR. Други производители на оригинално оборудване могат да изберат да предоставят само своите нощни режими на CameraX или да изберат да не прилагат никакви разширения. Изцяло зависи от производителя кое устройство поддържа какви разширения на CameraX (ако има такива). Google използвани за поддържане на списък с устройства които поддържат разширения на доставчици и какви функции на камерата са отворили, но не са актуализирали списъка през последните няколко месеца. Свързахме се с Google преди няколко седмици, като ги попитахме дали могат да предоставят актуализиран списък, но компанията все още не е отговорила със списък. За това, което си струва, a скорошна публикация в блог на Google заявява, че устройства от Samsung, LG, OPPO, Xiaomi и Motorola (на Android 10) предоставят известно разширение функции, но публикацията в блога не уточнява точно кои устройства се поддържат или какви функции имат предоставят.

Ако достатъчно производители решат да внедрят разширения, сцената на камерата на трети страни на Android ще бъде много по-ярка. Разработчиците няма да трябва да губят време за повторно внедряване на функция за камера за всяко устройство, което евентуално могат, тъй като рамката на CameraX ще се погрижи за това. Ще има по-малко фрагментиране на функциите, тъй като подобни функции на различни устройства ще бъдат достъпни чрез общ интерфейс. И има много повече възможности.


Разбира се, всичко зависи от способността на Google да убеди производителите да внедрят библиотеки за разширение на CameraX Vendor занапред. Освен ако CameraX не бъде широко внедрен, той просто ще добави към текущата фрагментация. Лично аз обаче съм обнадежден. Google може да бъде много убедителен, когато иска, и изглежда, че в CameraX се работи много. Вълнуващо е да видя възможно решение на проблемите с камерата на Android на хоризонта и очаквам с нетърпение да видя как CameraX ще се подобри и разшири с времето.

Какво мислите за CameraX? Ще успее ли Google да направи унифицирано изживяване с камера за Android?