Interfejs API rozszerzeń dostawców CameraX firmy Google umożliwia aplikacjom aparatów innych firm korzystanie z najlepszych funkcji standardowej aplikacji aparatu.
W Internecie krąży od dawna dowcip, że po tym można rozpoznać, czy ktoś korzysta z telefonu z Androidem zła jakość ich selfie. Choć memy zdecydowanie przesadzają, kryje się w nich niestety trochę prawdy. Telefony z Androidem zazwyczaj wyprzedzają iPhone'y pod względem wydajności aparatu, przynajmniej na papierze. Producenci OEM, tacy jak LG i Samsung, zwykle używają aparatów z większą liczbą pikseli i większą aperturą niż konkurencyjne iPhone'y. Specyfikacje to jednak nie wszystko. Jednym z powodów, dla których Apple może konkurować w grach z kamerą, jest oprogramowanie iOS. Wszyscy producenci OEM, od Apple po ZTE, używają magii oprogramowania, aby zdjęcia i filmy wyglądały lepiej. Firmy stosują algorytmy redukujące szumy, poprawiające nasycenie kolorów i kontrast, a nawet rozjaśniające ciemne sceny, a wszystko po to, aby efekt końcowy był przyjemniejszy. Historycznie rzecz biorąc, w tym miejscu producenci OEM Androida nie dorównali Apple.
Rozwój oprogramowania
Ostatnio jednak sytuacja zaczęła się zmieniać. Największym przykładem tej zmiany jest prawdopodobnie oferta Google i Pixel. Pod względem sprzętowym aparaty Pixel naprawdę nie mają sobie równych na tle innych flagowców. Oprogramowanie jest jednak tym, w czym Google robi różnicę. Dzięki funkcjom takim jak tryb portretowy, tryb nocny, HDR+ i zoom o dużej rozdzielczości, Pixele zyskały reputację dzięki niektórym najlepsze aparaty w smartfonach na rynku.
Inni producenci OEM Androida idą w ślady Google. Samsung, OPPO, Xiaomi, Vivo, OnePlus itp. wprowadziły własne wersje bardziej popularnych funkcji aparatu Pixel, a nawet mają kilka własnych unikalnych funkcji. Za pomocą modnych słów, takich jak „sztuczna inteligencja” i „uczenie maszynowe”, producenci OEM Androida próbują Cię przekonać, że ich oprogramowanie to oprogramowanie, dzięki któremu możesz ulepszyć swoje zdjęcia i filmy. Dotarliśmy do punktu, w którym telefony z Androidem mogą naprawdę konkurować z iPhone'ami pod każdym względem pod względem wydajności aparatu.
Problem
Niestety nadal istnieje jeden główny wyjątek: aplikacje innych firm. Twój flagowy model z superduperem i 50 aparatami może robić niesamowite zdjęcia dzięki wbudowanej aplikacji aparatu, ale przełącz się na Instagram, Snapchat lub nawet aplikacja aparatu innej firmy, co w zasadzie gwarantuje, że to, co uchwycisz, nie będzie wyglądać tak Dobry. Jakby tego było mało, tracisz także wszystkie fajne funkcje i tryby aparatu. Dzieje się tak dlatego, że w przeciwieństwie do iOS, Android nie ma tak naprawdę ujednoliconej struktury aparatu. Jasne, podstawowe funkcje są dostępne. Aplikacja innej firmy może nadal robić zdjęcia i nagrywać filmy oraz korzystać z lampy błyskowej. Ale co się stanie, jeśli Twój telefon będzie miał dodatkowy czujnik szerokokątny lub teleobiektyw? Możliwe, że programiści będą mogli uzyskać dostęp do drugiego czujnika, ale zastosowana przez nich metoda będzie musiała być specyficzna dla Twojego urządzenia.
Załóżmy, że masz LG V40 (wiem, wiem, wyobraź sobie, że masz). V40 ma trzy czujniki: standardowy, teleobiektyw i ultraszerokokątny. Wbudowana aplikacja aparatu nie ma problemu z przełączaniem pomiędzy wszystkimi tymi różnymi czujnikami. Ale zapomnij o korzystaniu z czujnika ultrawide na Instagramie. Teraz Instagram może przyjrzeć się, w jaki sposób aplikacja aparatu LG wykorzystuje różne czujniki, i opracować sposób, w jaki użytkownicy będą mogli robić zdjęcia szerokokątne lub z zoomem. Ale to prawdopodobnie działałoby tylko na LG V40. Mimo że Galaxy S10 ma te same trzy tryby czujnika (standardowy, teleobiektyw i ultrawide), zespół Instagrama musiałby opracować dla Samsunga inną metodę.
Teraz dodaj do mieszanki Huawei, Vivo, OnePlus, Xiaomi, OPPO, Nokia, ZTE, HTC i jakąkolwiek inną markę, o której możesz pomyśleć. Jak możesz sobie wyobrazić, próba opracowania metody dostępu tylko do potencjalnych dodatkowych czujników dla każdego telefonu każdej marki byłaby niezwykle uciążliwa. A następnie musisz zachować kompatybilność ze wszystkimi obecnymi i nowymi telefonami.
Ograniczenia te dotyczą również funkcji aparatu. Funkcje takie jak tryb portretowy, tryb nocny i HDR+ albo wymagają określonych metod dla poszczególnych urządzeń, albo są całkowicie niedostępne dla aplikacji innych firm.
Oczywiście w przypadku aplikacji takiej jak Instagram nie jest to zbyt duża sprawa. To nie jest ich specjalność i zawsze możesz skorzystać z aplikacji aparatu w telefonie, aby zrobić zdjęcie jako pierwszy. A co z dedykowanymi aplikacjami do aparatu?
Efekty
Otwórz Sklep Google Play i wyszukaj „aparat”. Znajdziesz setki wyników. Nawet pomimo udoskonaleń oprogramowania aparatu innych firm, aplikacje aparatów innych firm są nadal bardzo popularne. Niektóre mają na celu zapewnienie bardziej technicznych funkcji, takich jak ręczna ekspozycja i ustawianie ostrości (funkcje, których może nie mieć aplikacja aparatu w telefonie). Inne mają na celu zapewnienie spójnego UX na wszystkich urządzeniach.
Zwłaszcza z tego ostatniego powodu fragmentacja aparatu w Androidzie może niezwykle utrudniać tworzenie i utrzymywanie szeroko kompatybilnej aplikacji aparatu. Jeśli chcesz zapewnić dodatkowe funkcje, jak zamierzasz uwzględnić wszystkie potencjalne funkcje wszystkich potencjalnych aplikacji własnych? Jeśli szukasz spójnego doświadczenia, jak możesz realistycznie zagwarantować, że dostęp do czujnika szerokokątnego na każdym urządzeniu, które je posiada, będzie działać?
Odpowiedź brzmi: nie możesz. Możesz spróbować obsługiwać jak najwięcej funkcji na jak największej liczbie urządzeń, ale ostatecznie będzie to wymagało dużo pracy i stosunkowo niewielkiej nagrody. Nietrudno sobie wyobrazić, że przynajmniej kilku programistów po prostu zrezygnowało z tworzenia w pełni funkcjonalnej aplikacji aparatu na Androida. Faktycznie, kilku tak miało.
Ofiary
Wyszukaj aplikacje aparatu w Sklepie Play. Zauważysz kilka rzeczy. Jeden, są działka opcji. Po drugie, większość z nich robi całkiem podobne rzeczy (stosuje filtry po fakcie i tym podobne). Po trzecie, bardziej zaawansowane opcje prawdopodobnie nie są aktualizowane tak często. Możesz nawet znaleźć w Google wyniki, których nie ma już w sklepie.
Ostatnio otrzymaliśmy dość poważny przykład kogoś, kto powiedział, że rezygnuje. Firma Moment podjęła decyzję o zaprzestaniu prac nad aplikacją Pro Camera na Androida.
Aplikacja Pro Camera firmy Moment miała na celu udostępnienie zaawansowanych funkcji zdjęć i wideo w systemie Android. To tylko niektóre z tych funkcji:
- Histogramy RGB
- Podziel fokus
- Ręczna kontrola ekspozycji, ISO, czasu otwarcia migawki, balansu bieli
- Maksymalne skupienie
- Przechwytywanie RAW
- Dynamiczne zmiany liczby klatek na sekundę i rozdzielczości
Problem w tym, że wiele z tych funkcji po prostu nie działa na wielu urządzeniach. Przeglądanie listy kompatybilności funkcji Moment przypomina patrzenie na zdjęcie parkietu tanecznego. Nawet w ramach tej samej linii produktów obsługa funkcji jest niezwykle fragmentaryczna. Po dwóch latach rozwoju Moment nie jest już w stanie kontynuować rozwoju swojej aplikacji.
Zielony = obsługiwany przez kamerę Moment Pro. Żółty = obsługiwany przez urządzenie, ale nie przez moją kamerę Moment Pro. Czerwony = nieobsługiwany przez urządzenie. Źródło obrazu: chwila. Pobrane przez: 9to5Google.
Rozwiązanie?
Minęło prawie 12 lat od premiery Androida, ale być może w końcu mamy rozwiązanie problemu fragmentacji aparatu.
To rozwiązanie pochodzi prosto od Google, chociaż nie jest wbudowane bezpośrednio w Androida. Zamiast tego jest to Biblioteka obsługi Jetpack. Jeśli znasz się na tworzeniu aplikacji na Androida, prawdopodobnie natknąłeś się na zestawy bibliotek wsparcia AppCompat i AndroidX. Biblioteki Google mają na celu ułatwienie programistom utrzymania kompatybilności wstecznej ze starszymi wersjami Androida, przy jednoczesnej możliwości wprowadzania nowych funkcji i stylów.
Nowszym dodatkiem do Jetpack (w pewnym sensie) jest biblioteka CameraX. Podobnie jak inne biblioteki Jetpack, celem CameraX jest ułatwienie tworzenia kamer. W swojej najbardziej podstawowej formie CameraX otacza Androida Kamera2, interfejs API umożliwiający aplikacjom sprawdzanie funkcji aparatu na urządzeniu, pod warunkiem, że producent OEM udostępni interfejsowi API te funkcje aparatu. Użytkownicy mogą sprawdzić, jakie funkcje aparatu są dostępne w interfejsie API Camera2 za pomocą aplikacji Camera2 API Probe, a następnie porównać je z funkcjami dostępnymi w standardowej aplikacji aparatu.
Cena: za darmo.
4.2.
Zaletą używania CameraX jako opakowania dla API Camera2 jest to, że wewnętrznie rozwiązuje wszelkie problemy ze zgodnością specyficzne dla urządzenia, które mogą się pojawić. Samo to będzie przydatne dla twórców aplikacji do aparatu, ponieważ może skrócić kod szablonowy i czas spędzony na badaniu problemów z aparatem. To jednak nie wszystko, co potrafi CameraX.
Chociaż pierwsza część jest interesująca głównie dla programistów, druga część dotyczy zarówno programistów, jak i użytkowników końcowych: Rozszerzenia dostawcy. To odpowiedź Google na fragmentację funkcji aparatu w Androidzie. Producenci urządzeń mogą zdecydować się na dostarczanie ze swoimi telefonami bibliotek rozszerzeń, które umożliwiają CameraX (oraz programistom i użytkownikom) korzystanie z natywnych funkcji aparatu. Załóżmy na przykład, że bardzo podoba Ci się efekt trybu portretowego firmy Samsung, ale nie podoba Ci się sama aplikacja aparatu. Jeśli Samsung zdecyduje się na wdrożenie rozszerzenia trybu portretowego CameraX w swoich telefonach, każda aplikacja innej firmy korzystająca z CameraX będzie mogła korzystać z trybu portretowego firmy Samsung. Oczywiście nie ogranicza się to tylko do tej jednej funkcji. Producenci mogą teoretycznie udostępnić dowolne funkcje swojego aparatu aplikacjom korzystającym z CameraX.
Niestety jest jedno zastrzeżenie, o którym wspomniałem wcześniej: nie jest to wymóg dla producentów. Google twierdzi będą obsługiwać rozszerzenia na wszystkich nowych i nadchodzących urządzeniach Pixel, zaczynając od Pixela 4. twierdzi OPPO otworzyli swoje tryby Beauty i HDR. Inni producenci OEM mogą zdecydować się na udostępnienie CameraX tylko swoich trybów nocnych lub mogą w ogóle nie wdrażać żadnych rozszerzeń. To, które urządzenie obsługuje które rozszerzenia CameraX (jeśli istnieją), zależy całkowicie od producenta. Google używany do utrzymywania listy urządzeń obsługujące rozszerzenia dostawcy i funkcje aparatu, które udostępniły, ale nie aktualizowały tej listy przez ostatnie kilka miesięcy. Kilka tygodni temu skontaktowaliśmy się z Google, prosząc o udostępnienie zaktualizowanej listy, ale firma nie odpowiedziała jeszcze, przesyłając listę. O ile to jest warte, a najnowszy wpis na blogu Google stwierdza, że urządzenia firm Samsung, LG, OPPO, Xiaomi i Motorola (na systemie Android 10) zapewniają pewne rozszerzenia funkcje, ale wpis na blogu nie określa dokładnie, które urządzenia są obsługiwane i jakie funkcje pełnią dostarczać.
Jeśli wystarczająca liczba producentów zdecyduje się na wdrożenie rozszerzeń, scena kamer innych firm w Androidzie będzie znacznie jaśniejsza. Programiści nie będą musieli tracić czasu na ponowne wdrażanie funkcji aparatu na każdym możliwym urządzeniu, ponieważ zajmie się tym platforma CameraX. Fragmentacja funkcji będzie mniejsza, ponieważ podobne funkcje na różnych urządzeniach będą dostępne za pośrednictwem wspólnego interfejsu. Możliwości jest znacznie więcej.
Wszystko zależy oczywiście od tego, czy Google zdoła przekonać producentów do wdrożenia w przyszłości bibliotek CameraX Vendor Extension. O ile CameraX nie zostanie powszechnie wdrożony, po prostu zwiększy obecną fragmentację. Osobiście jednak jestem pełen nadziei. Google potrafi być bardzo przekonujący, jeśli chce, i wygląda na to, że w CameraX włożono dużo pracy. To ekscytujące widzieć na horyzoncie możliwe rozwiązanie problemów z aparatem w Androidzie i nie mogę się doczekać, aby zobaczyć, jak CameraX będzie się z czasem udoskonalać i rozwijać.
Co sądzisz o aplikacji CameraX? Czy Googleowi uda się stworzyć ujednoliconą obsługę aparatu dla Androida?