Zarządzanie kontrolerami TV

Urządzenia TV wymagają dodatkowego urządzenia sprzętowego do interakcji z aplikacjami – podstawowego pilota lub kontrolera do gier. Dlatego aplikacja musi obsługiwać wprowadzanie danych za pomocą pada kierunkowego. Aplikacja może też wymagać obsługi kontrolerów, które przechodzą w tryb offline, oraz danych wejściowych z więcej niż jednego typu kontrolera.

W tym przewodniku omawiamy wymagania dotyczące obsługi kontrolerów w urządzeniach TV.

Minimalne elementy sterujące na padzie kierunkowym

Domyślnym kontrolerem urządzenia TV jest pad kierunkowy. Ogólnie rzecz biorąc, aplikacja musi być obsługiwana za pomocą pilota, który ma tylko przyciski w górę, w dół, w lewo, w prawo, wybierz, Wstecz i ekran główny. Jeśli Twoja aplikacja jest grą, która zwykle wymaga kontrolera do gier z dodatkowymi elementami sterującymi, spróbuj obsługiwać rozgrywkę tylko za pomocą tych elementów sterujących na padzie kierunkowym. W przeciwnym razie ostrzeż użytkownika, że wymagany jest kontroler, i pozwól mu w prosty sposób wyjść z gry za pomocą kontrolera z padem kierunkowym.

Więcej informacji o nawigacji za pomocą kontrolerów z padem kierunkowym w urządzeniach TV znajdziesz w artykule Nawigacja w telewizorze.

Obsługa rozłączania kontrolera

Kontrolery do telewizora są często urządzeniami Bluetooth, które mogą próbować oszczędzać energię, okresowo przechodząc w tryb uśpienia i odłączając się od urządzenia TV. Oznacza to, że jeśli aplikacja nie jest skonfigurowana do obsługi tych zdarzeń ponownego łączenia, może zostać przerwana lub ponownie uruchomiona. Te zdarzenia mogą wystąpić w dowolnych z tych okoliczności:

  • 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 urządzenia TV i ponownie połączyć się później.
  • Podczas rozgrywki nowy gracz może dołączyć do gry za pomocą kontrolera do gier, który jest nie jest jeszcze połączony.
  • Podczas rozgrywki gracz może opuścić grę i odłączyć kontroler do gier.

Każda aktywność aplikacji TV, która podlega zdarzeniom odłączenia i ponownego połączenia, musi być skonfigurowana do obsługi zdarzeń ponownego połączenia w pliku manifestu aplikacji. Poniższy przykładowy kod pokazuje, jak włączyć aktywność, aby obsługiwała zmiany konfiguracji, w tym podłączanie, odłączanie i ponowne łączenie 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 po zdarzeniu ponownego połączenia zamiast ponownego uruchamiania przez platformę Android, co nie jest dobrym rozwiązaniem dla użytkownika.

Obsługa różnych danych wejściowych z pada kierunkowego

Użytkownicy urządzeń TV mogą mieć więcej niż jeden typ kontrolera, którego używają z telewizorem. Użytkownik może na przykład mieć zarówno podstawowy kontroler z padem kierunkowym, jak i kontroler do gier. Kody klawiszy podawane przez kontroler do gier, gdy jest używany do funkcji pada kierunkowego, mogą się różnić od kodów klawiszy wysyłanych przez podstawowy pad kierunkowy.

Obsługuj różne dane wejściowe z pada kierunkowego, aby użytkownik nie musiał przełączać kontrolerów, aby korzystać z Twojej aplikacji. Więcej informacji o obsłudze różnych danych wejściowych znajdziesz w artykule Przetwarzanie danych wejściowych z pada kierunkowego.

Obsługa zdarzeń przycisków

Gdy użytkownik kliknie przycisk na kontrolerze, Twoja aplikacja otrzyma zdarzenie z elementem KeyEvent. Przeznaczeniem przycisku może być zdarzenie multimedialne, takie jak odtwarzanie, wstrzymywanie lub zatrzymywanie, albo zdarzenie typu TV, takie jak wybór lub nawigacja. Aby zapewnić użytkownikom wygodę, przypisz przyciskom kontrolera spójne działanie.

Zdarzenia interfejsu TV

Przypisz działanie interfejsu TV do przycisków, które generują typy KeyEvent, jak pokazano w tabeli poniżej:

KeyEventZachowanie
KEYCODE_BUTTON_B, KEYCODE_BACKWstecz
KEYCODE_BUTTON_SELECT, KEYCODE_BUTTON_A, KEYCODE_ENTER, KEYCODE_DPAD_CENTER, KEYCODE_NUMPAD_ENTERZaznaczenie
KEYCODE_DPAD_UP, KEYCODE_DPAD_DOWN, KEYCODE_DPAD_LEFT, KEYCODE_DPAD_RIGHTNawigacja

Zdarzenia multimedialne

Gdy użytkownik ogląda multimedia, przypisz działanie do przycisków, które generują typy KeyEvent, jak pokazano w tabeli poniżej. Jeśli Twoja aplikacja steruje elementem MediaSession, użyj elementu MediaControllerAdapter , aby wywołać jedną z metod MediaControllerCompat.TransportControls pokazanych w tabeli. Pamiętaj, że w tym kontekście przyciski wyboru działają jak przyciski odtwarzania lub wstrzymywania.

KeyEventWywołanie TransportControlsZachowanie
BUTTON_SELECT, BUTTON_A, ENTER, DPAD_CENTER, KEYCODE_NUMPAD_ENTER play()Google Play
BUTTON_START, BUTTON_SELECT, BUTTON_A, ENTER, DPAD_CENTER, KEYCODE_NUMPAD_ENTER pause()Wstrzymaj
BUTTON_R1skipToNext()Dalej
BUTTON_L1skipToPrevious()Wstecz
DPAD_RIGHT, BUTTON_R2, AXIS_RTRIGGER, AXIS_THROTTLEfastForward()Przewiń do przodu
DPAD_LEFT, BUTTON_L2, AXIS_LTRIGGER, AXIS_BRAKErewind()Przewiń do tyłu
Nie dotyczystop()Zatrzymaj

Uwaga: gdy używasz elementu MediaSession, nie zastępuj obsługi przycisków multimedialnych, takich jak KEYCODE_MEDIA_PLAY czy KEYCODE_MEDIA_PAUSE. System automatycznie wywołuje odpowiednią MediaSession.Callback metodę.

Zapewnij odpowiednie działanie przycisku Wstecz

Przycisk Wstecz nigdy nie może działać jako przełącznik. Nie używaj go na przykład do otwierania i zamykania menu. Używaj go tylko do nawigacji wstecznej, w stylu ścieżki nawigacji, po poprzednich ekranach, na których był gracz.

Ponieważ przycisk Wstecz wykonuje tylko liniową nawigację wsteczną, możesz go użyć aby opuścić menu w aplikacji otwarte za pomocą innego przycisku i wrócić do aplikacji. Kolejne naciśnięcia przycisku Wstecz muszą 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 programu TV > ekran główny aplikacji TV > ekran główny Androida TV.

Więcej informacji o projektowaniu nawigacji znajdziesz w artykule Projektowanie nawigacji za pomocą przycisków Wstecz i W górę. Więcej informacji o implementacji znajdziesz w artykule Zapewnianie prawidłowego przechodzenia wstecz.

Obsługa kontrolerów do gier

Obsługa elementów sterujących na padzie kierunkowym

Zaplanuj schemat sterowania wokół pada kierunkowego, ponieważ ten zestaw elementów sterujących jest domyślny w urządzeniach z Androidem TV. Gracz musi mieć możliwość używania pada kierunkowego do wszystkich aspektów gry – nie tylko do sterowania rozgrywką, ale też do poruszania się po menu i reklamach. Z tego powodu, upewnij się, że Twoja gra na Androida TV nie odwołuje się do interfejsu dotykowego za pomocą takich sformułowań jak "Dotknij tutaj, aby kontynuować."

Sposób, w jaki gracz wchodzi w interakcję z kontrolerem, może mieć kluczowe znaczenie dla zapewnienia użytkownikom wygody. Nie zapomnij o tych sprawdzonych metodach:

  • Z góry informuj o wymaganiach dotyczących kontrolera: w opisie w Google Play poinformuj gracza o wymaganiach dotyczących kontrolerów. Jeśli gra lepiej nadaje się do pada z joystickiem niż do pada z padem kierunkowym, wyraźnie to zaznacz. Gracz, który używa nieodpowiedniego kontrolera do gry, może mieć złe wrażenia i wystawić Twojej grze niską ocenę.
  • Używaj spójnego mapowania przycisków: intuicyjne mapowanie przycisków jest kluczem do zapewnienia użytkownikom wygodnego korzystania. Na przykład przestrzegaj przyjętych zwyczajów, używając przycisku A do akceptowania i przycisku B do anulowania. Możesz też zapewnić elastyczność w postaci możliwości ponownego mapowania. Więcej informacji o mapowaniu przycisków znajdziesz w artykule Obsługa działań kontrolera.
  • Wykrywaj możliwości kontrolera i odpowiednio je dostosowuj: zapytaj kontroler o jego możliwości, aby zoptymalizować dopasowanie kontrolera do gry. Możesz na przykład chcieć, aby gracz sterował obiektem, machając kontrolerem w powietrzu, ale jeśli kontroler gracza nie ma akcelerometru i żyroskopu, machanie nie będzie działać. Zapytaj kontroler i jeśli wykrywanie ruchu nie jest obsługiwane, przełącz się na alternatywny, dostępny schemat sterowania. Więcej informacji o sprawdzaniu możliwości kontrolera znajdziesz w artykule Obsługa kontrolerów w różnych wersjach Androida.

Używaj odpowiednich przycisków

Nie wszystkie kontrolery do gier mają przyciski Start, Wyszukaj ani Menu. Upewnij się, że interfejs nie zależy od użycia tych przycisków.

Obsługa wielu kontrolerów

Gdy w grę gra kilku graczy, każdy z własnym kontrolerem, ważne jest, aby zmapować każdą parę gracz-kontroler. Informacje o tym, jak zaimplementować identyfikację numeru kontrolera , znajdziesz w artykule getControllerNumber().

Obsługa rozłączania kontrolera

Gdy kontroler zostanie odłączony w trakcie rozgrywki, wstrzymaj grę i wyświetl a okno z prośbą o ponowne podłączenie kontrolera.

W oknie podaj też wskazówki dotyczące rozwiązywania problemów. Na przykład poproś gracza, aby "sprawdził połączenie Bluetooth". Więcej informacji o implementowaniu obsługi urządzeń wejściowych znajdziesz w artykule Obsługa działań kontrolera i Omówienie Bluetootha.

Wyświetlanie instrukcji dotyczących kontrolera

Jeśli Twoja gra zawiera wizualne instrukcje sterowania, użyj a obrazu kontrolera bez logo i uwzględnij tylko przyciski zgodne z Androidem.

Przykładowe obrazy kontrolera zgodnego z Androidem znajdziesz w szablonie pada do gier na Androida TV (ZIP). Zawiera on biały kontroler na czarnym tle i czarny kontroler na białym tle (jak na rysunku 1) w formacie PNG i Adobe® Illustrator®.

Rysunek 1. Przykładowe instrukcje dotyczące kontrolera z użyciem szablonu pada do gier na Androida TV.