Android zapewnia użytkownikom bogate wrażenia, które są zoptymalizowane pod kątem aplikacji działających na urządzeniach z dużym ekranem, takich jak telewizory o wysokiej rozdzielczości. Możesz zwiększyć grono odbiorców aplikacji, tworząc ją na Androida TV. Ten dokument zawiera wskazówki, jak to zrobić skutecznie.
Tworzenie aplikacji na telewizory
Aplikacje na telewizory korzystają z tej samej struktury co aplikacje na telefony i tablety. Dzięki temu możesz tworzyć nowe aplikacje na telewizory na podstawie swojej wiedzy o tworzeniu aplikacji na Androida lub rozszerzać istniejące aplikacje, aby działały również na urządzeniach TV.
Model interakcji użytkownika w przypadku telewizorów różni się jednak znacznie od modelu na telefony i tablety. Aby aplikacja działała dobrze na urządzeniach z telewizorem, musisz zaprojektować nowe układy, które będą czytelne z odległości 3 metrów, oraz zapewnić nawigację, która działa tylko z klawiaturą kierunkową i przyciskiem wyboru.
Więcej informacji o takich kwestiach, jak obsługa kontrolerów sterowania sprzętem telewizyjnym, tworzenie układów na telewizory i tworzenie nawigacji na telewizory, znajdziesz w artykule Tworzenie aplikacji na telewizory.
Korzystanie z Media3 ExoPlayer
Jetpack Media3 udostępnia interfejs odtwarzacza, który definiuje podstawowe funkcje, takie jak odtwarzanie, wstrzymywanie, przewijanie i wyświetlanie informacji o utworze. ExoPlayer to domyślna implementacja tego interfejsu w Media3.
W porównaniu z interfejsem MediaPlayer API w Androidzie oferuje on dodatkowe udogodnienia, takie jak obsługa wielu protokołów strumieniowania, domyślne renderery audio i wideo oraz komponenty obsługujące buforowanie multimediów.
ExoPlayera możesz dostosować i rozszerzyć, a także aktualizować w Sklepie Play. Więcej informacji znajdziesz w Media3 ExoPlayer.
Użyj Media3 MediaSession
Sesje multimediów to uniwersalny sposób na interakcję systemu z odtwarzaczem audio lub wideo aplikacji. Jedną z głównych cech, która odróżnia Media3 od poprzednich interfejsów API multimediów, jest to, że nie trzeba już używać łączników między komponentami.
Nowa klasa MediaSession
przyjmuje dowolną klasę, która implementuje interfejs Player. Zarówno ExoPlayer, jak i MediaController to klasy, które implementują ten interfejs. Dzięki temu interakcja między komponentami jest znacznie prostsza.
Więcej informacji znajdziesz w artykule Interfejs odtwarzacza.
Więcej informacji o tworzeniu aplikacji do odtwarzania multimediów znajdziesz w artykule Tworzenie podstawowego odtwarzacza multimediów za pomocą ExoPlayera.
Aby zapewnić użytkownikom aplikacji multimedialnej jak najlepsze wrażenia, musisz wdrożyć MediaSession
. Aby to zrobić, zainicjuj zmienną Player
i przekaż ją do zmiennej MediaSession.Builder
w ten sposób:
Kotlin
val player = ExoPlayer.Builder(context).build() val mediaSession = MediaSession.Builder(context, player).build()
Java
ExoPlayer player = new ExoPlayer.Builder(context).build(); MediaSession mediaSession = new MediaSession.Builder(context, player).build();
Automatyczne przetwarzanie stanu
Biblioteka Media3 automatycznie aktualizuje sesję multimediów, korzystając ze stanu odtwarzacza. W związku z tym nie musisz ręcznie mapować odtwarzacza na sesję. Dzięki temu użytkownicy zawsze widzą aktualne informacje o odtwarzanych mediach, m.in. na karcie Co jest grane.
kontrolować odtwarzanie i reklamować je,
W Media3 domyślnym odtwarzaczem jest klasa ExoPlayer, która implementuje interfejs Player. Połączenie sesji multimediów z odtwarzaczem umożliwia aplikacji wyświetlanie informacji o odtwarzaniu multimediów na zewnątrz i odbieranie poleceń odtwarzania ze źródeł zewnętrznych. Sesja multimediów deleguje te polecenia do odtwarzacza aplikacji multimedialnej.
Sesja multimediów jest kluczowa dla sterowania odtwarzaniem. Umożliwia ona kierowanie poleceń z zewnętrznych źródeł do odtwarzacza, który odtwarza Twoje multimedia. Klienci zewnętrzni mogą używać kontrolera multimediów do wydawania poleceń dotyczących odtwarzania do Twojej aplikacji multimedialnej. Polecenia te są odbierane przez sesję multimediów, która ostatecznie deleguje je do odtwarzacza multimediów.
.Więcej informacji o odtwarzaniu, np. o dostosowywaniu zachowania poleceń odtwarzania, znajdziesz w artykule Kontrolowanie i reklamowanie odtwarzania za pomocą MediaSession.
Unikaj zakłóceń w aplikacji
Korzystanie z usługi MediaSession
pozwala uniknąć niepotrzebnych przerw, takich jak:
Nieoczekiwane i ciągłe odtwarzanie po wyłączeniu telewizora lub przełączeniu wejść telewizora. Spowoduje to również duże zużycie energii przez sprzęt telewizora. Dzięki temu aplikacja może poinformować platformę, że odtwarza multimedia, a platforma może poinformować aplikację, że odtwarzanie może zostać zatrzymane.
MediaSession
Odtwarzanie muzyki nieoczekiwanie się zatrzymuje po wyłączeniu aplikacji lub wyłączeniu ekranu telewizora. Korzystanie z interfejsów API
MediaSession
umożliwia kontynuowanie odtwarzania w usłudze działającej w tle.Ograniczona interakcja z treścią, która uniemożliwia użytkownikom kontrolowanie odtwarzania. Może to być na przykład powrót do aplikacji, która odtwarza muzykę w tle, lub obsługa poleceń głosowych. Dzięki
MediaSession
w aplikacji użytkownicy mogą używać poleceń głosowych do przewijania i przeskakiwania utworów lub odcinków.
Dodatkowe uwagi
Podczas rozszerzania aplikacji multimedialnej na Androida na telewizory musisz wziąć pod uwagę kwestie związane z dostępnością, sposoby zwiększania zaangażowania użytkowników, umożliwianie im znajdowania treści oraz tworzenie gier i usług wejściowych na telewizory.
Ułatwienia dostępu w telewizorze
Chociaż technologie wspomagające mogą pomagać niedowidzącym użytkownikom, ważne jest, aby w przypadku aplikacji na telewizory zapewnić dostępność na etapie odkrywania treści.
Zwróć na przykład szczególną uwagę na wskazówki dotyczące nawigacji i prawidłowe oznaczanie elementów oraz upewnij się, że aplikacje na telewizory dobrze współpracują z funkcjami ułatwień dostępu, takimi jak TalkBack. Dzięki temu użytkownicy z niepełnosprawnością wzroku będą mogli wygodniej korzystać z usługi.
Pierwszym krokiem na drodze do poprawy ułatwień dostępu jest uświadomienie. Więcej informacji o skalowaniu tekstu, układach klawiatury i audiodeskrypcjach znajdziesz w zasobach dotyczących ułatwień dostępu.
Sprawdzone metody zwiększania zaangażowania na Google TV
Wszystkie aplikacje stworzone na Androida TV działają na urządzeniach z Google TV. Aby zapewnić użytkownikom Google TV jak najlepsze wrażenia, zalecamy stosowanie tych sprawdzonych metod.
Aby zapewnić uniwersalny sposób interakcji z odtwarzaczem audio lub wideo, musisz użyć MediaSession
. Więcej informacji o wdrażaniu tej funkcji znajdziesz w artykule Korzystanie z MediaSession w Media3.
Twoja aplikacja musi obsługiwać Google Cast. Dzięki temu możesz rozszerzyć swoje aplikacje na Androida, iOS i Chrome, aby umożliwić strumieniowe przesyłanie dźwięku i obrazu na telewizory z Androidem, a także na urządzenia Chromecast i Assistant. Więcej informacji znajdziesz w dokumentacji Google Cast.
Możesz też pomóc użytkownikom:
Odkrywaj treści na różnych platformach, oferując kanał działań związanych z mediami lub integrując funkcję „Warto obejrzeć”.
Korzystaj z głosu i zaangażowania, obsługując łączenie kont i synchronizację uprawnień, oferując przesyłanie głosowe i włączając Cast Connect.
Łatwiej płacić dzięki integracji z systemem płatności Google Play i bezproblemowemu pozyskiwaniu subskrybentów.
Tworzenie ramy źródła TV
Oglądanie programów telewizyjnych na żywo i innych ciągłych treści na kanałach jest ważną częścią korzystania z telewizji. Użytkownicy są przyzwyczajeni do wybierania i oglądania programów w telewizji przez przeglądanie kanałów. Framework wejścia danych TV tworzy kanały do publikowania treści wideo lub muzycznych w przewodniku po programach telewizyjnych.
Framework wejścia TV zapewnia ujednoliconą metodę odbierania i odtwarzania treści wideo na żywo ze źródeł sprzętowych, takich jak porty HDMI i wbudowane tunery, oraz źródeł programowych, takich jak strumieniowane treści wideo przez internet. Więcej informacji znajdziesz w artykule Tworzenie usług wprowadzania danych na potrzeby telewizji.