Jak Jetpack Compose pomaga budować elastyczne aplikacje multimedialne: studium przypadku EasyBangumi
Znasz to uczucie, gdy chcesz obejrzeć swój ulubiony serial lub anime, ale musisz przeskakiwać między pięcioma różnymi stronami, zamykać niekończące się banery i zmagać się z niedziałającymi odtwarzaczami? Twórcy z społeczności open-source często rozwiązują te problemy radykalnie — piszą własne agregatory.
Projekt EasyBangumi (lub „Czyste oglądanie anime", jak nazywają go autorzy) to nie tylko kolejny odtwarzacz. To w pełni funkcjonalny klient Android zbudowany na nowoczesnym stosie technologicznym, który przekształca chaos różnych źródeł treści w jedną, uporządkowaną bibliotekę. Co ciekawe, projekt został pierwotnie stworzony jako poligon doświadczalny do testowania Jetpack Compose i pracy z technologiami audio-wideo.

Co kryje się w tym wielofunkcyjnym narzędziu
EasyBangumi działa na zasadzie modułowej. Sama aplikacja jest pustą powłoką z logiką odtwarzacza i katalogowania. Cała zawartość przepływa przez system wtyczek. Uwalnia to autorów od problemów z prawami autorskimi i daje użytkownikom pełną swobodę.
Aplikacja oferuje już całkiem solidny zestaw funkcji:
- Pełne wyszukiwanie i rekomendacje na ekranie głównym.
- System „ulubionych" do śledzenia nowych odcinków.
- Zaawansowany odtwarzacz z przełączaniem motywów, kontrolą prędkości odtwarzania i historią oglądania.
- Obsługa Cast do strumieniowania na telewizory.
- Pobieranie odcinków do oglądania offline.
- Nagrywanie klipów wideo jako GIF-ów w locie — zabawna funkcja rzadko spotykana w mobilnych odtwarzaczach.
Stos technologiczny i architektura
Jeśli spojrzysz na kod źródłowy, od razu widać, że autorzy są zdecydowanie po stronie Kotlina. Projekt jest świetnym przykładem tego, jak wygląda nowoczesny rozwój Androida bez dziedzictwa starych widoków XML.
Jetpack Compose w centrum uwagi
Cały interfejs jest napisany w Compose. Dzięki temu możliwe stało się wdrożenie dynamicznych motywów i bardzo płynnych przejść. Jeśli dopiero przechodzisz na deklaratywny UI, kod EasyBangumi pokazuje, jak zorganizować nawigację i zarządzanie stanem w dość dużej aplikacji.
System wtyczek
Najcenniejszą częścią dla developerów jest mechanizm „źródeł". Aplikacja ma wbudowany marketplace wtyczek. Jest to realizowane poprzez dynamiczne ładowanie, co pozwala dodawać nowe strony źródłowe bez aktualizacji samej aplikacji.
|
|
|
|
|:---------------------------------:|:----------------------------------:|:----------------------------------:|
|
|
|
|

Dlaczego warto to przestudiować
Nawet jeśli nie jesteś fanem anime, EasyBangumi jest interesujący jako studium przypadku architektonicznego. Projekty tutorialne często ograniczają się do prostej listy zadań lub klienta pogodowego. Tutaj widzimy prawdziwą pracę z ciężkimi treściami:
- Buforowanie danych: jak przechowywać historię i postęp wideo bez spowalniania interfejsu.
- Przetwarzanie wideo: implementacja niestandardowego odtwarzacza opartego na ExoPlayer (lub Media3) z niestandardowym nakładaniem UI.
- Obsługa sieci: parsowanie zasobów zewnętrznych i omijanie ograniczeń.
Prawdę mówiąc, twórcy planują uruchomić wersję na PC i synchronizację danych w chmurze. Biorąc pod uwagę, że projekt zgromadził prawie 4000 gwiazdek na GitHub, społeczność aktywnie zachęca autorów do rozbudowy.
Kto skorzysta na tym projekcie
Przede wszystkim — programiści Android na poziomie mid. Nauka Compose z tutoriali Google to jedno, ale zobaczenie, jak prawdziwa aplikacja z mnóstwem ekranów, wtyczek i złożonym odtwarzaczem jest na nim zbudowana, to zupełnie inne doświadczenie.
Po drugie — ci, którzy chcą zbudować własne centrum multimedialne „pod siebie". Kod jest otwarty na licencji Apache 2.0, więc nikt nie zabrania forkowania i adaptacji go do własnych potrzeb (na przykład dla kina online z filmami lub kursów edukacyjnych).
Jedno zastrzeżenie: README i część interfejsu są pierwotnie w języku chińskim, ale struktura kodu jest przejrzysta, a logika wtyczek jest zrozumiała dla każdego, kto kiedykolwiek pisał parsery.
Jeśli chcesz zobaczyć, jak nowoczesny Kotlin współpracuje z Compose w realnym zadaniu — rzuć okiem na repozytorium EasyBangumi.
Powiązane projekty