TV-Controller verwalten

Für Fernsehgeräte ist ein sekundäres Hardwaregerät für die Interaktion mit Apps erforderlich – eine einfache Fernbedienung oder ein Controller. Deine App muss daher die Eingabe über die Richtungstasten (Steuerkreuz) unterstützen. Außerdem muss deine App möglicherweise Controller verarbeiten, die offline sind und Eingaben von mehr als einem Controllertyp ausführen.

In diesem Leitfaden werden die Anforderungen für den Umgang mit Controllern für TV-Geräte erläutert.

Steuerkreuz-Mindesteinstellungen

Der Standard-Controller für Fernseher ist ein Steuerkreuz. Im Allgemeinen muss deine App über eine Fernbedienung gesteuert werden können, die nur die Schaltflächen „Nach oben“, „Nach unten“, „Links“, „Rechts“, „Auswählen“, „Zurück“ und „Startbildschirm“ hat. Wenn es sich bei deiner App um ein Spiel handelt, für das normalerweise ein Controller mit zusätzlichen Steuerelementen erforderlich ist, solltest du versuchen, das Gameplay nur mit diesem Steuerkreuz zu unterstützen. Warnen Sie andernfalls den Nutzer, dass ein Controller erforderlich ist, und lassen Sie ihn das Spiel ordnungsgemäß über das Steuerkreuz beenden.

Weitere Informationen zur Navigation mit dem Steuerkreuz auf Fernsehern findest du unter TV-Navigation.

Trennen der Verbindung zum Controller

Controller für Fernseher sind häufig Bluetooth-Geräte, die möglicherweise versuchen, Strom zu sparen, indem sie in regelmäßigen Abständen in den Ruhemodus wechseln und die Verbindung zum Fernseher trennen. Dies bedeutet, dass eine Anwendung unterbrochen oder neu gestartet werden kann, wenn sie nicht für diese Wiederholungsereignisse konfiguriert ist. Diese Ereignisse können unter folgenden Umständen eintreten:

  • Während ein Video mit einer Länge von mehreren Minuten abgespielt wird, kann es passieren, dass ein Steuerkreuz oder ein Controller in den Ruhemodus wechselt, die Verbindung zum Fernseher getrennt und später wiederhergestellt wird.
  • Während des Spiels kann ein neuer Spieler dem Spiel über einen Controller beitreten, der noch nicht angeschlossen ist.
  • Während des Spiels kann es vorkommen, dass ein Spieler das Spiel verlässt und die Verbindung zu einem Controller trennt.

Alle TV-App-Aktivitäten, bei denen Ereignisse vom Typ „Verbindung trennen“ und „Verbindung wieder herstellen“ betroffen sind, müssen im App-Manifest so konfiguriert werden, dass Ereignisse zu erneuten Verbindungen verarbeitet werden. Im folgenden Codebeispiel wird gezeigt, wie Sie eine Aktivität aktivieren, um Konfigurationsänderungen zu verarbeiten, einschließlich einer Tastatur oder eines Navigationsgeräts, die eine Verbindung herstellt, trennt oder wieder eine Verbindung herstellt:

<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>

Durch diese Konfigurationsänderung kann die App weiterhin über ein Ereignis zur erneuten Verbindung ausgeführt werden, anstatt durch das Android-Framework neu gestartet zu werden, was für Nutzer nicht nutzerfreundlich ist.

Eingabevariationen des Steuerkreuzes verarbeiten

Nutzer von Fernsehgeräten haben möglicherweise mehrere Arten von Controllern, die sie für ihren Fernseher verwenden. Angenommen, ein Nutzer hat sowohl einen einfachen Controller als auch einen Controller. Die Tastencodes, die ein Controller für Funktionen des Steuerkreuzes bereitstellt, können sich von den Codes unterscheiden, die vom einfachen Steuerkreuz gesendet werden.

Behandeln Sie Variationen der Steuerkreuzeingabe, damit der Nutzer zum Ausführen Ihrer App nicht zwischen den Controllern wechseln muss. Weitere Informationen zum Umgang mit Eingabevariationen finden Sie unter Eingabevariationen über die Tasten zur Verarbeitung.

Schaltflächenereignisse verarbeiten

Wenn der Nutzer auf eine Schaltfläche auf einem Controller klickt, empfängt deine App ein Ereignis mit einer KeyEvent. Das gewünschte Verhalten der Schaltfläche kann ein Medienereignis wie „Wiedergabe“, „Pause“ oder „Stopp“ oder ein Ereignis vom Typ „TV“ wie Auswahl oder Navigation sein. Weisen Sie den Controller-Schaltflächen ein einheitliches Verhalten zu.

TV-UI-Ereignisse

Weisen Sie den Schaltflächen, die KeyEvent-Typen generieren, das TV-UI-Verhalten zu, wie in der folgenden Tabelle dargestellt:

KeyEventVerhalten
KEYCODE_BUTTON_B, KEYCODE_BACKZurück
KEYCODE_BUTTON_SELECT, KEYCODE_BUTTON_A, KEYCODE_ENTER, KEYCODE_DPAD_CENTER, KEYCODE_NUMPAD_ENTERAuswahl
KEYCODE_DPAD_UP, KEYCODE_DPAD_DOWN, KEYCODE_DPAD_LEFT, KEYCODE_DPAD_RIGHTNavigation

Medienereignisse

Wenn sich der Nutzer Medien ansieht, weise den Schaltflächen, die KeyEvent-Typen generieren, ein Verhalten zu, wie in der folgenden Tabelle dargestellt. Wenn Ihre Anwendung eine MediaSession steuert, verwenden Sie einen MediaControllerAdapter, um eine der MediaControllerCompat.TransportControls-Methoden aus der Tabelle aufzurufen. Beachten Sie, dass die Auswahlschaltflächen in diesem Kontext als Schaltflächen für Wiedergabe oder Pause fungieren.

KeyEventTransportControls-AufrufVerhalten
BUTTON_SELECT, BUTTON_A, ENTER, DPAD_CENTER, KEYCODE_NUMPAD_ENTER play()Abspielen
BUTTON_START, BUTTON_SELECT, BUTTON_A, ENTER, DPAD_CENTER, KEYCODE_NUMPAD_ENTER pause()Pausieren
BUTTON_R1skipToNext()Weiter zum Nächsten
BUTTON_L1skipToPrevious()Rückwärts springen
DPAD_RIGHT, BUTTON_R2, AXIS_RTRIGGER, AXIS_THROTTLEfastForward()Vorspulen
DPAD_LEFT, BUTTON_L2, AXIS_LTRIGGER, AXIS_BRAKErewind()Zurückspulen
stop()Aufnahme beenden

Hinweis:Wenn du MediaSession verwendest, überschreibe nicht die Verarbeitung medienspezifischer Schaltflächen wie KEYCODE_MEDIA_PLAY oder KEYCODE_MEDIA_PAUSE. Das System löst automatisch die entsprechende MediaSession.Callback-Methode aus.

Für ein angemessenes Verhalten der Schaltfläche „Zurück“ sorgen

Die Schaltfläche „Zurück“ darf niemals als Ein/Aus-Schaltfläche fungieren. Du solltest sie beispielsweise nicht gleichzeitig zum Öffnen und Schließen eines Menüs verwenden. Verwende sie nur, um im Navigationspfad-Stil rückwärts durch die vorherigen Bildschirme zu navigieren, auf denen der Player angezeigt wurde.

Da die Schaltfläche „Zurück“ nur lineare Rückwärtsnavigation ermöglicht, kannst du damit ein In-App-Menü verlassen, das über eine andere Schaltfläche geöffnet wurde, und zur App zurückkehren. Wenn du danach auf die Schaltfläche „Zurück“ drückst, muss dies immer zum Android TV-Startbildschirm führen. Beispiel: Spiel > Spiele-Pausenbildschirm > Hauptbildschirm des Spiels > Android TV-Startbildschirm oder Wiedergabe einer Serie > Hauptbildschirm der TV-App > Android TV-Startbildschirm.

Weitere Informationen zum Design für die Navigation findest du unter Zurück- und Nach-oben-Navigation entwerfen. Weitere Informationen zur Implementierung findest du unter Korrekte „Zurück“-Navigation bereitstellen.

Controller für Spiele bedienen

Unterstützung des Steuerkreuzes

Plane dein Steuerschema um eine Steuerung mit dem Steuerkreuz, da dieses Steuerelement der Standard für Android TV-Geräte ist. Der Spieler muss das Steuerkreuz für alle Aspekte des Spiels verwenden können – nicht nur für die Steuerung des Hauptspiels, sondern auch für die Navigationsmenüs und Anzeigen. Achte deshalb darauf, dass dein Android TV-Spiel nicht auf eine Touchoberfläche mit einer Sprache wie „Zum Fortfahren hier tippen“ verweist.

Wie du die Interaktion des Spielers mit dem Controller formulierst, kann entscheidend für eine hervorragende Nutzererfahrung sein. Folgende Best Practices können dabei hilfreich sein:

  • Controller-Anforderungen im Voraus mitteilen:Informiere den Spieler in deiner Google Play-Beschreibung über alle Erwartungen an Controller. Falls sich ein Spiel eher für ein Gamepad mit Joystick als für ein Gamepad mit Steuerkreuz eignet, machen Sie das deutlich. Ein Spieler, der einen ungeeigneten Controller für ein Spiel verwendet, kann die Nutzerfreundlichkeit beeinträchtigen und Ihrem Spiel eine schlechte Bewertung geben.
  • Einheitliche Schaltflächenzuordnung verwenden:Eine intuitive Schaltflächenzuordnung ist der Schlüssel zu einer positiven Nutzererfahrung. Halten Sie sich beispielsweise an den akzeptierten Zoll, indem Sie mit der Schaltfläche „A“ zustimmen und mit der Schaltfläche „B“ abbrechen. Sie können auch Flexibilität in Form von Wiederanpassbarkeit bieten. Weitere Informationen zur Schaltflächenzuordnung findest du unter Controlleraktionen verarbeiten.
  • Controller-Funktionen erkennen und entsprechende Anpassungen vornehmen:Frag den Controller nach seinen Funktionen, um die Übereinstimmung zwischen Controller und Spiel zu optimieren. Angenommen, ein Spieler soll ein Objekt steuern, indem er mit dem Controller in der Luft winkt, aber wenn ihm ein Beschleunigungsmesser und eine Gyroskophardware fehlen, funktioniert das Winken nicht. Fragen Sie den Controller ab und wechseln Sie zu einem anderen verfügbaren Steuerschema, wenn die Bewegungserkennung nicht unterstützt wird. Weitere Informationen zu Abfrage-Controller-Funktionen finden Sie unter Unterstützung von Controllern unter Android.

Geeignete Schaltflächen verwenden

Nicht alle Controller haben Schaltflächen zum Starten, Suchen oder Menü. Achte darauf, dass deine UI nicht von der Verwendung dieser Schaltflächen abhängt.

Mehrere Controller verarbeiten

Wenn mehrere Spieler ein Spiel mit jeweils einem eigenen Controller spielen, ist es wichtig, jedes Spieler-Controller-Paar zuzuordnen. Informationen zur Implementierung der Identifizierung der Controllernummer findest du unter getControllerNumber().

Trennen der Verbindung zum Controller

Wenn ein Controller mitten im Spiel getrennt wird, pausieren Sie das Spiel und zeigen Sie ein Dialogfeld an, in dem der Spieler aufgefordert wird, ihn wieder zu verbinden.

Geben Sie im Dialogfeld auch Tipps zur Fehlerbehebung an. Sag dem Player beispielsweise: „Überprüfe deine Bluetooth-Verbindung“. Weitere Informationen zur Implementierung der Unterstützung für Eingabegeräte findest du unter Controlleraktionen verarbeiten und in der Bluetooth-Übersicht.

Controller-Anleitung anzeigen

Wenn Ihr Spiel eine visuelle Spielsteuerung bietet, verwenden Sie ein Controller-Image ohne Branding und verwenden Sie nur mit Android kompatible Schaltflächen.

Laden Sie für Beispielbilder eines Android-kompatiblen Controllers die Gamepad-Vorlage (ZIP) für Android TV herunter. Es besteht aus einem weißen Controller auf schwarzem Hintergrund und einem schwarzen Controller auf weißem Hintergrund (siehe Abbildung 1) als PNG- und Adobe® Illustrator®-Datei.

Abbildung 1: Beispiel für eine Controlleranleitung mit der Gamepad-Vorlage für Android TV