Do interakcji z aplikacjami telewizory wymagają dodatkowego urządzenia – podstawowego pilota lub kontrolera gier. Aplikacja musi więc obsługiwać wprowadzanie na padzie kierunkowym. Aplikacja może też wymagać obsługi kontrolerów przechodzących w tryb offline i pochodzących z więcej niż 1 typu kontrolera.
W tym przewodniku omówiono wymagania dotyczące obsługi kontrolerów urządzeń telewizyjnych.
Minimalne elementy sterujące na padzie kierunkowym
Domyślnym kontrolerem telewizora jest pad kierunkowy. Aplikację można obsługiwać za pomocą pilota, który ma tylko przyciski góra, dół, lewa, prawa, wyboru, Wstecz i przycisk ekranu głównego. Jeśli Twoja aplikacja jest grą, która zwykle wymaga kontrolera do gier z dodatkowymi elementami sterującymi, spróbuj obsługiwać rozgrywkę wyłącznie za pomocą tych przycisków na padzie kierunkowym. W przeciwnym razie poinformuj użytkownika, że jest wymagany kontroler, i pozwól mu płynnie zamknąć grę za pomocą kontrolera pada kierunkowego.
Więcej informacji o nawigacji za pomocą kontrolerów padów kierunkowych w przypadku urządzeń telewizyjnych znajdziesz w artykule o nawigacji na telewizorze.
Kontroler się rozłącza
Kontrolery do telewizora to często urządzenia Bluetooth, które mogą próbować oszczędzać energię, okresowo przechodząc w tryb uśpienia i odłączając się od telewizora. Oznacza to, że aplikacja może zostać przerwana lub uruchomiona ponownie, jeśli nie jest skonfigurowana do obsługi zdarzeń ponownego połączenia. Może się tak zdarzyć, gdy:
- Podczas odtwarzania filmu, który trwa kilka minut, pad kierunkowy lub kontroler do gier może przejść w tryb uśpienia, odłączyć się od telewizora i połączyć ponownie później.
- W trakcie rozgrywki nowy gracz może dołączyć do gry za pomocą kontrolera, który nie jest jeszcze połączony.
- W trakcie rozgrywki gracz może opuścić grę i odłączyć kontroler.
Każda aktywność w aplikacji na telewizory, która wymaga zdarzeń rozłączenia i ponownego połączenia, musi być skonfigurowana pod kątem obsługi zdarzeń ponownego połączenia w pliku manifestu aplikacji. Poniższy przykładowy kod pokazuje, jak włączyć działanie do obsługi zmian konfiguracji, w tym podłączenia, rozłączania i ponownego podłączenia klawiatury lub urządzenia nawigacyjnego:
<activity android:name="com.example.android.TvActivity" android:label="@string/app_name" android:configChanges="keyboard|keyboardHidden|navigation" android:theme="@style/Theme.Leanback"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LEANBACK_LAUNCHER" /> </intent-filter> ... </activity>
Ta zmiana konfiguracji umożliwia aplikacji dalsze działanie w ramach zdarzenia ponownego połączenia, a nie przez platformę Androida, co nie jest wygodne dla użytkowników.
Obsługa odmian danych wejściowych na padzie kierunkowym
Użytkownicy telewizorów mogą mieć więcej niż jeden typ kontrolera do używania na telewizorze. Na przykład użytkownik może mieć zarówno podstawowy kontroler pada kierunkowego, jak i kontroler do gier. Kody klawiszy podawane przez kontroler do gier, gdy jest on używany do obsługi funkcji pada kierunkowego, mogą się różnić od kodów klawiszy wysyłanych przez podstawowy pad kierunkowy.
Obsługuj warianty danych wejściowych pada kierunkowego, aby użytkownik nie musiał przełączać kontrolerów do obsługi aplikacji. Więcej informacji o obsłudze odmian danych wejściowych znajdziesz w sekcji Przetwarzanie danych wejściowych za pomocą pada kierunkowego.
Obsługuj zdarzenia przycisku
Gdy użytkownik kliknie przycisk na kontrolerze, aplikacja otrzyma zdarzenie z KeyEvent
. Działaniem przycisku może być zdarzenie multimedialne, takie jak odtworzenie, wstrzymanie lub zatrzymanie. Może też to być zdarzenie typu telewizyjnego, np. wybór czy nawigacja. Aby zadbać o wygodę użytkowników, przypisz spójne działanie przyciskom kontrolera.
Zdarzenia dotyczące interfejsu telewizora
Przypisz zachowanie interfejsu telewizora do przycisków, które generują typy KeyEvent
, jak pokazano w tej tabeli:
KeyEvent | Działanie |
---|---|
KEYCODE_BUTTON_B , KEYCODE_BACK | Wstecz |
KEYCODE_BUTTON_SELECT , KEYCODE_BUTTON_A , KEYCODE_ENTER ,
KEYCODE_DPAD_CENTER , KEYCODE_NUMPAD_ENTER | Zaznaczenie |
KEYCODE_DPAD_UP , KEYCODE_DPAD_DOWN , KEYCODE_DPAD_LEFT ,
KEYCODE_DPAD_RIGHT | Nawigacja |
Zdarzenia multimedialne
Gdy użytkownik ogląda multimedia, przypisz zachowanie przycisków, które generują typy KeyEvent
, zgodnie z tabelą poniżej. Jeśli Twoja aplikacja kontroluje MediaSession
, użyj MediaControllerAdapter
, aby wywołać jedną z metod MediaControllerCompat.TransportControls
podanych w tabeli. Pamiętaj, że w tym przypadku przyciski wyboru działają jak przyciski Odtwórz i Wstrzymaj.
KeyEvent | Rozmowa TransportControls | Działanie |
---|---|---|
BUTTON_SELECT , BUTTON_A , ENTER ,
DPAD_CENTER , KEYCODE_NUMPAD_ENTER |
play() | Odtwarzaj |
BUTTON_START , BUTTON_SELECT , BUTTON_A ,
ENTER , DPAD_CENTER , KEYCODE_NUMPAD_ENTER |
pause() | Wstrzymaj |
BUTTON_R1 | skipToNext() | Dalej |
BUTTON_L1 | skipToPrevious() | Wstecz |
DPAD_RIGHT , BUTTON_R2 , AXIS_RTRIGGER ,
AXIS_THROTTLE | fastForward() | Przewijanie filmu |
DPAD_LEFT , BUTTON_L2 , AXIS_LTRIGGER ,
AXIS_BRAKE | rewind() | Przewiń do tyłu |
Nie dotyczy | stop() | Zatrzymaj |
Uwaga: jeśli używasz MediaSession
, nie zastępuj obsługi przycisków związanych z multimediami, takich jak KEYCODE_MEDIA_PLAY
czy KEYCODE_MEDIA_PAUSE
.
System automatycznie aktywuje odpowiednią metodę MediaSession.Callback
.
Zapewnianie prawidłowego działania przycisku Wstecz
Przycisk Wstecz nie może działać jako przełącznik. Nie używaj go na przykład do otwierania i zamykania menu. Służy on jedynie do przechodzenia wstecz (w stylu menu nawigacyjnego) do poprzednich ekranów, w których działał odtwarzacz.
Ponieważ przycisk Wstecz działa tylko w trybie liniowym, możesz użyć go, aby pozostawić menu w aplikacji otwarte innym przyciskiem i wrócić do aplikacji. Kolejne naciśnięcie przycisku Wstecz musi zawsze prowadzić do ekranu głównego Androida TV. Na przykład: rozgrywka > ekran wstrzymania gry > ekran główny gry > ekran główny Androida TV lub odtwarzanie serialu > ekran główny aplikacji TV > ekran główny Androida TV.
Więcej informacji o projektowaniu nawigacji znajdziesz w artykule o projektowaniu nawigacji związanej z kopiami zapasowymi i wcześniejszymi. Więcej o implementacji znajdziesz w artykule Zapewnianie prawidłowej nawigacji wstecz.
Obsługa kontrolerów do gier
Obsługa sterowania za pomocą pada kierunkowego
Zaplanuj schemat sterowania na padach kierunkowych, ponieważ jest to domyślny zestaw sterowania na urządzeniach z Androidem TV. Gracz musi mieć możliwość korzystania z pada kierunkowego do wszystkich aspektów gry – nie tylko sterowania główną rozgrywką, ale też poruszaniem się po menu i reklamach. Dlatego upewnij się, że Twoja gra na Androida TV nie obsługuje interfejsu dotykowego z komunikatem takim jak „Kliknij tutaj, by kontynuować”.
Sposób, w jaki kształtujesz interakcję gracza z kontrolerem, może mieć kluczowe znaczenie dla zapewnienia wygody użytkownikom. Nie zapomnij o tych sprawdzonych metodach:
- Określ z góry wymagania dotyczące kontrolera: użyj opisu w Google Play, aby poinformować gracza o wszelkich oczekiwaniach dotyczących kontrolerów. Powiedz to jasno, jeśli gra lepiej nadaje się do gamepada z joystickiem niż z padem kierunkowym. Gracz, który używa niewłaściwego kontrolera w grze, może mieć złe wrażenia i wystawić grą słabą ocenę.
- Zachowaj spójne mapowanie przycisków: intuicyjne mapowanie przycisków jest kluczem do zapewnienia użytkownikom wygody użytkowania. Możesz na przykład przestrzegać akceptowanych zwyczajów, klikając przycisk A do zaakceptowania lub przycisk B do anulowania. Możesz też zaoferować elastyczność w formie możliwości ponownego przypisania. Więcej informacji o mapowaniu przycisków znajdziesz w sekcji Obsługiwanie działań kontrolera.
- Wykrywanie możliwości kontrolera i odpowiednie dostosowywanie: wyślij do kontrolera zapytanie o jego możliwości, aby zoptymalizować dopasowanie między kontrolerem a grą. Na przykład możesz chcieć, by gracz sterował obiektem, machając kontrolerem w powietrzu. Jeśli jednak kontroler nie ma akcelerometru ani żyroskopu, machanie nie działa. Wyślij zapytanie do kontrolera, a jeśli wykrywanie ruchu nie jest obsługiwane, przełącz się na alternatywny, dostępny schemat sterowania. Więcej informacji o funkcjach kontrolera zapytań znajdziesz w artykule Obsługa kontrolerów w różnych wersjach Androida.
Używanie odpowiednich przycisków
Nie wszystkie kontrolery do gier mają przyciski uruchamiania, wyszukiwania i menu. Upewnij się, że interfejs użytkownika nie zależy od użycia tych przycisków.
Obsługa kilku kontrolerów
Gdy w grę gra wielu graczy, każdy z nich ma własny kontroler, ważne jest, by zmapować każdą parę kontroler-kontroler. Informacje o implementowaniu identyfikatora numeru kontrolera znajdziesz w sekcji
getControllerNumber()
.
Kontroler się rozłącza
Jeśli kontroler zostanie odłączony w trakcie gry, wstrzymaj grę i wyświetl okno z prośbą o ponowne połączenie kontrolera z odłączonym graczem.
Podaj też w oknie wskazówki dotyczące rozwiązywania problemów. Powiedz na przykład „Sprawdź połączenie Bluetooth”. Więcej informacji o wdrażaniu obsługi urządzeń wejściowych znajdziesz w artykułach Obsługa działań kontrolera i omówieniem Bluetootha.
Pokaż instrukcje kontrolera
Jeśli Twoja gra zawiera instrukcje sterowania grą, użyj zdjęcia kontrolera bez oznaczeń marki i uwzględnij tylko przyciski zgodne z Androidem.
Przykładowe zdjęcia kontrolera zgodnego z Androidem znajdziesz w pliku Android TV Gamepad Template (ZIP). Zawiera on biały kontroler na czarnym tle oraz czarny kontroler na białym tle (przedstawiony na ilustracji 1) w postaci pliku PNG oraz programu Adobe® Illustrator®.