TV-Controller verwalten

Fernsehgeräte benötigen ein sekundäres Hardwaregerät für die Interaktion mit Apps – einen einfachen Fernbedienungs- oder Gamecontroller. Daher muss Ihre App die Eingabe über die Richtungstasten (das Steuerkreuz) unterstützen. Außerdem muss Ihre App möglicherweise mit Controllern umgehen, die offline sind und Eingaben von mehr als einem Controllertyp ausführen.

In diesem Leitfaden werden die Anforderungen für die Handhabung von Controllern für TV-Geräte erläutert.

Mindesteinstellungen des Steuerkreuzes

Der Standardcontroller für TV-Geräte ist ein Steuerkreuz. Die App muss im Allgemeinen über eine Fernbedienung mit den Aufwärts-, Ab-, Links-, Rechts-, Auswahl-, Zurück- und Startbildschirmtasten gesteuert werden können. Wenn für Ihre App ein Spiel erforderlich ist, für das normalerweise ein Controller mit zusätzlichen Steuerelementen erforderlich ist, versuchen Sie, das Gameplay nur mit diesen Steuerkreuzen zu unterstützen. Warnen Sie andernfalls den Nutzer, dass ein Controller erforderlich ist, und lassen Sie ihn Ihr Spiel mit dem Steuerkreuz beenden.

Weitere Informationen zur Navigation mit dem Steuerkreuz für TV-Geräte findest du unter TV-Navigation.

Verbindung des Controllers trennen

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

  • Während ein mehrere Minuten langes Video abgespielt wird, kann ein Steuerkreuz oder ein Gamecontroller in den Ruhemodus wechseln, die Verbindung zum Fernseher trennen und später wieder eine Verbindung herstellen.
  • Während des Spiels kann ein neuer Spieler mit einem noch nicht verbundenen Controller am Spiel teilnehmen.
  • Während des Spiels kann es vorkommen, dass ein Spieler das Spiel verlässt und die Verbindung zu einem Controller getrennt hat.

Alle TV-App-Aktivitäten, bei denen die Verbindung getrennt und wiederhergestellt werden muss, müssen im App-Manifest so konfiguriert werden, dass Ereignisse zum erneuten Herstellen einer Verbindung 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 verbindet:

<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 auch bei einem erneuten Verbindungsaufbau weiter ausgeführt werden, anstatt vom Android-Framework neu gestartet zu werden, was eine schlechte Nutzererfahrung bietet.

Umgang mit Variationen des Steuerkreuzes

Nutzer von Fernsehern haben möglicherweise mehr als einen Controllertyp, den sie mit ihrem Fernseher verwenden. Beispielsweise kann ein Nutzer sowohl einen einfachen Controller als auch einen Gamecontroller haben. Die Tastencodes, die ein Gamecontroller bereitstellt, wenn er für Funktionen des Steuerkreuzes verwendet wird, können von den Tastencodes abweichen, die von einem einfachen Steuerkreuz gesendet werden.

Verarbeiten Sie die Variationen der Eingabe über das Steuerkreuz so, dass der Nutzer zur Bedienung der Anwendung nicht zwischen den Controllern wechseln muss. Weitere Informationen zum Umgang mit Eingabevariationen finden Sie unter Eingabe der Richtungstasten verarbeiten.

Schaltflächenereignisse verarbeiten

Wenn der Nutzer auf eine Schaltfläche auf einem Controller klickt, empfängt Ihre App ein Ereignis mit einem KeyEvent. Das beabsichtigte Verhalten der Schaltfläche kann ein Medienereignis wie „Wiedergabe“, „Pause“ oder „Stopp“ oder ein Ereignis vom Typ „TV“ sein, z. B. eine Auswahl oder Navigation. Weisen Sie Controller-Tasten ein einheitliches Verhalten zu, um für eine gute Nutzererfahrung zu sorgen.

TV-UI-Ereignisse

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

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

Medienveranstaltungen

Wenn sich der Nutzer Medien ansieht, muss den Schaltflächen, die KeyEvent-Typen generieren, ein Verhalten zugewiesen werden, wie in der folgenden Tabelle gezeigt. Wenn deine App ein MediaSession steuert, verwende einen MediaControllerAdapter, um eine der MediaControllerCompat.TransportControls-Methoden aufzurufen, die in der Tabelle angezeigt werden. Beachten Sie, dass die Auswahlschaltflächen in diesem Kontext als Wiedergabe- oder Pausenschaltflächen fungieren.

KeyEventTransportControls-AufrufVerhalten
BUTTON_SELECT, BUTTON_A, ENTER, DPAD_CENTER, KEYCODE_NUMPAD_ENTER play()Spielen
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 eine MediaSession verwendest, darf die Handhabung medienspezifischer Schaltflächen wie KEYCODE_MEDIA_PLAY oder KEYCODE_MEDIA_PAUSE nicht überschrieben werden. Das System löst automatisch die entsprechende MediaSession.Callback-Methode aus.

Angemessenes Verhalten der Zurück-Schaltfläche ermöglichen

Die Schaltfläche „Zurück“ darf niemals als Ein/Aus-Schaltfläche genutzt werden. Du solltest sie beispielsweise nicht verwenden, um ein Menü gleichzeitig zu öffnen und zu schließen. Verwende ihn nur, um rückwärts und im Navigationspfad durch die vorherigen Bildschirme zu navigieren, auf denen sich der Spieler befand.

Da die Schaltfläche „Zurück“ nur eine lineare Rückwärtsnavigation bietet, können Sie damit ein In-App-Menü beibehalten, das über eine andere Schaltfläche geöffnet wurde, und zur App zurückkehren. Ein aufeinanderfolgendes Drücken der Zurück-Taste muss immer zum Android TV-Startbildschirm führen. Beispiel: „Spiel starten“ > „Pause“ des Spiels > „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 finden Sie unter Korrekte Rückwärtsnavigation bereitstellen.

Controller für Spiele verwenden

Steuerkreuz-Steuerung unterstützen

Planen Sie Ihr Steuerschema um ein Steuerkreuz, da dieses Steuerelement standardmäßig für Android TV-Geräte verwendet wird. Der Spieler muss für alle Aspekte des Spiels ein Steuerkreuz verwenden können. So kann er nicht nur das Hauptspiel steuern, sondern auch Menüs und Werbung bedienen. Achte deshalb darauf, dass sich dein Android TV-Spiel nicht auf eine Touchoberfläche mit Sprache wie „Zum Fortfahren hier tippen“ bezieht.

Wie du die Interaktion des Spielers mit dem Controller formulierst, kann entscheidend für eine positive Nutzererfahrung sein. Beachten Sie die folgenden Best Practices:

  • Informiere den Spieler im Voraus über die Controller-Anforderungen:Informiere den Spieler in der Google Play-Beschreibung über alle Erwartungen an Controller. Erläutern Sie, ob ein Game mit einem Joystick oder einem Controller mit einem Steuerkreuz besser geeignet ist. Ein Spieler, der einen schlecht geeigneten Controller für ein Spiel verwendet, kann eine schlechte Erfahrung und eine schlechte Bewertung für Ihr Spiel geben.
  • Einheitliche Schaltflächenzuordnung verwenden: Eine intuitive Schaltflächenzuordnung ist der Schlüssel zu einer guten Nutzererfahrung. Du kannst beispielsweise die akzeptierten Zollbestimmungen einhalten, indem du die Schaltfläche A zum Akzeptieren und die Schaltfläche B zum Abbrechen verwendest. Sie können auch Flexibilität in Form der Wiederzuordnung bieten. Weitere Informationen zur Schaltflächenzuordnung findest du unter Controller-Aktionen verarbeiten.
  • Controllerfunktionen erkennen und entsprechend anpassen:Fragen Sie den Controller nach seinen Funktionen ab, um den Abgleich zwischen Controller und Spiel zu optimieren. Beispiel: Ein Spieler könnte ein Objekt steuern, indem er mit dem Controller in der Luft winkt. Wenn der Controller eines Spielers jedoch keinen Beschleunigungsmesser und ein Gyroskop hat, funktioniert das Winken nicht. Fragen Sie die Steuerung ab. Wenn die Bewegungserkennung nicht unterstützt wird, wechseln Sie zu einem alternativen, verfügbaren Steuerschema. Weitere Informationen zum Abfragen von Controllerfunktionen finden Sie unter Controller für Android-Versionen unterstützen.

Geeignete Schaltflächen verwenden

Nicht alle Controller haben Start-, Such- oder Menütasten. Achten Sie darauf, dass Ihre UI nicht von der Verwendung dieser Schaltflächen abhängt.

Mehrere Controller verwenden

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

Verbindung des Controllers trennen

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

Geben Sie in dem Dialogfeld außerdem Tipps zur Fehlerbehebung. Sage dem Player beispielsweise: „Überprüfe deine Bluetooth-Verbindung“. Weitere Informationen zum Implementieren der Unterstützung von Eingabegeräten findest du unter Controller-Aktionen verarbeiten und in der Bluetooth-Übersicht.

Controller-Anleitung anzeigen

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

Beispielbilder eines mit Android kompatiblen Controllers findest du in der Android TV Gamepad-Vorlage (ZIP). Sie enthält einen weißen Controller auf schwarzem Hintergrund und einen schwarzen Controller auf weißem Hintergrund (Abbildung 1) als PNG- und Adobe® Illustrator®-Datei.

Abbildung 1: Hier ein Beispiel für eine Controller-Anleitung mit der Android TV Gamepad-Vorlage.