TV-Controller verwalten

Für die Interaktion mit Apps auf TV-Geräten ist ein sekundäres Hardwaregerät erforderlich, z. B. eine einfache Fernbedienung oder ein Gamecontroller. Daher muss Ihre App die Eingabe über das Steuerkreuz unterstützen. Außerdem muss Ihre App möglicherweise mit Controllern umgehen können, die die Verbindung verlieren, und Eingaben von mehr als einem Controllertyp verarbeiten.

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

Mindestanzahl an Steuerelementen für das Steuerkreuz

Der Standardcontroller für ein TV-Gerät ist ein Steuerkreuz. Im Allgemeinen muss Ihre App mit einer Fernbedienung bedient werden können, die nur die Tasten „Nach oben“, „Nach unten“, „Nach links“, „Nach rechts“, „Auswählen“, „Zurück“ und „Startbildschirm“ hat. Wenn Ihre App ein Spiel ist, für das normalerweise ein Gamecontroller mit zusätzlichen Steuerelementen erforderlich ist, versuchen Sie, das Gameplay nur mit diesen Steuerkreuz-Steuerelementen zu unterstützen. Andernfalls warnen Sie den Nutzer, dass ein Controller erforderlich ist, und ermöglichen Sie ihm, das Spiel über den Steuerkreuz-Controller zu beenden.

Weitere Informationen zur Navigation mit Steuerkreuz-Controllern für TV-Geräte finden Sie unter TV-Navigation.

Verbindungsabbrüche von Controllern verarbeiten

Controller für TV-Geräte sind häufig Bluetooth-Geräte, die versuchen, Strom zu sparen, indem sie regelmäßig in den Ruhemodus wechseln und die Verbindung zum TV-Gerät trennen. Das bedeutet, dass eine App unterbrochen oder neu gestartet werden kann, wenn sie nicht so konfiguriert ist, dass sie diese Ereignisse zum Wiederherstellen der Verbindung verarbeiten kann. Diese Ereignisse können in den folgenden Fällen auftreten:

  • Während der Wiedergabe eines Videos, das mehrere Minuten lang ist, kann ein Steuerkreuz oder ein Game Controller in den Ruhemodus wechseln, die Verbindung zum TV-Gerät trennen und später wieder eine Verbindung herstellen.
  • Während des Spiels kann ein neuer Spieler mit einem Gamecontroller beitreten, der noch nicht verbunden ist.
  • Während des Spiels kann ein Spieler das Spiel verlassen und einen Gamecontroller trennen.

Alle TV-App-Aktivitäten, die von Verbindungsabbrüchen und Ereignissen zum Wiederherstellen der Verbindung betroffen sind, müssen so konfiguriert sein, dass sie Ereignisse zum Wiederherstellen der Verbindung im App-Manifest verarbeiten. Das folgende Codebeispiel zeigt, wie Sie eine Aktivität so konfigurieren, dass sie Konfigurationsänderungen verarbeiten kann, einschließlich des Verbindens, Trennens oder Wiederverbindens einer Tastatur oder eines Navigationsgeräts:

<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 nach einem Ereignis zum Wiederherstellen der Verbindung weiter ausgeführt werden, anstatt vom Android-Framework neu gestartet zu werden, was keine gute Nutzererfahrung ist.

Variationen bei der Eingabe über das Steuerkreuz verarbeiten

Nutzer von TV-Geräten haben möglicherweise mehr als einen Controllertyp, den sie mit ihrem TV-Gerät verwenden. Ein Nutzer hat beispielsweise sowohl einen einfachen Steuerkreuz-Controller als auch einen Gamecontroller. Die von einem Gamecontroller bereitgestellten Tastencodes , wenn er für Steuerkreuz-Funktionen verwendet wird, können von den Tastencodes abweichen, die von einem einfachen Steuerkreuz gesendet werden.

Verarbeiten Sie die Variationen bei der Eingabe über das Steuerkreuz, damit der Nutzer nicht den Controller wechseln muss, um Ihre App zu bedienen. Weitere Informationen zum Verarbeiten von Eingabevariationen finden Sie unter Eingabe über das Steuerkreuz 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 für die Schaltfläche kann ein Medienereignis wie „Play“, „Pause“ oder „Beenden“ oder ein TV-Ereignis wie „Auswahl“ oder „Navigation“ sein. Um eine gute Nutzererfahrung zu bieten, 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 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

Medienereignisse

Wenn der Nutzer Medien ansieht, weisen Sie den Schaltflächen, die KeyEvent-Typen generieren, das Verhalten zu, wie in der folgenden Tabelle gezeigt. Wenn Ihre App eine MediaSession steuert, verwenden Sie einen MediaControllerAdapter , um eine der MediaControllerCompat.TransportControls -Methoden aufzurufen, die in der Tabelle gezeigt werden. Beachten Sie, dass die Auswahltasten in diesem Kontext als „Play“- oder „Pause“ Tasten fungieren.

KeyEventTransportControls-AufrufVerhalten
BUTTON_SELECT, BUTTON_A, ENTER, DPAD_CENTER, KEYCODE_NUMPAD_ENTER play()Play
BUTTON_START, BUTTON_SELECT, BUTTON_A, ENTER, DPAD_CENTER, KEYCODE_NUMPAD_ENTER pause()Pause
BUTTON_R1skipToNext()Vorwärts springen
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()Beenden

Hinweis: Wenn Sie eine MediaSession verwenden, überschreiben Sie nicht die Verarbeitung von medienspezifischen Schaltflächen wie KEYCODE_MEDIA_PLAY oder KEYCODE_MEDIA_PAUSE. Das System löst automatisch die entsprechende MediaSession.Callback Methode aus.

Angemessenes Verhalten für die Schaltfläche „Zurück“ bereitstellen

Der Button „Zurück“ darf niemals als Umschalter fungieren. Verwenden Sie sie beispielsweise nicht, um ein Menü zu öffnen und zu schließen. Verwenden Sie sie nur, um im Breadcrumb-Stil durch die vorherigen Bildschirme zu navigieren, auf denen sich der Nutzer befunden hat.

Da die Schaltfläche „Zurück“ nur eine lineare Rückwärtsnavigation ausführt, können Sie sie verwenden, um ein In-App-Menü zu verlassen, das mit einer anderen Schaltfläche geöffnet wurde, und zur App zurückzukehren. Durch wiederholtes Drücken der Schaltfläche „Zurück“ muss der Nutzer immer zum Android TV-Startbildschirm gelangen. Beispiel: Spiel > Bildschirm „Spiel pausieren“ > Hauptbildschirm des Spiels > Android TV-Startbildschirm oder TV-Sendung > Hauptbildschirm der TV-App > Android TV-Startbildschirm.

Weitere Informationen zum Design für die Navigation finden Sie unter Rückwärts- und Aufwärtsnavigation gestalten. Informationen zur Implementierung finden Sie unter Problemlose Rückwärtsnavigation ermöglichen.

Controller für Spiele verarbeiten

Steuerkreuz-Steuerelemente unterstützen

Planen Sie Ihr Steuerungsschema um ein Steuerkreuz herum, da diese Steuerung standardmäßig für Android TV-Geräte verwendet wird. Der Nutzer muss ein Steuerkreuz für alle Aspekte des Spiels verwenden können, nicht nur für die Steuerung des eigentlichen Gameplays, sondern auch für die Navigation in Menüs und Anzeigen. Achten Sie daher darauf, dass in Ihrem Android TV-Spiel nicht auf eine Touch-Oberfläche verwiesen wird, z. B. mit dem Text „Tippen Sie hier, um fortzufahren“.

Die Art und Weise, wie der Nutzer mit dem Controller interagiert, kann entscheidend für eine gute Nutzer erfahrung sein. Folgende Best Practices können dabei hilfreich sein:

  • Controller-Anforderungen im Voraus kommunizieren: Verwenden Sie Ihre Google Play-Beschreibung , um dem Nutzer alle Erwartungen in Bezug auf Controller mitzuteilen. Wenn ein Spiel besser für ein Gamepad mit Joystick geeignet ist als für ein Gamepad mit nur einem Steuerkreuz, machen Sie das deutlich. Ein Nutzer, der einen ungeeigneten Controller für ein Spiel verwendet, hat möglicherweise eine schlechte Erfahrung und gibt Ihrem Spiel eine schlechte Bewertung.
  • Einheitliche Tastenbelegung verwenden: Eine intuitive Tastenbelegung ist entscheidend für eine gute Nutzererfahrung. Halten Sie sich beispielsweise an die üblichen Konventionen, indem Sie die A-Taste zum Bestätigen und die B-Taste zum Abbrechen verwenden. Sie können auch Flexibilität in Form einer Neubelegung anbieten. Weitere Informationen zur Tastenbelegung finden Sie unter Controller-Aktionen verarbeiten.
  • Controller-Funktionen erkennen und entsprechend anpassen:Fragen Sie den Controller nach seinen Funktionen, um die Übereinstimmung zwischen Controller und Spiel zu optimieren. Beispielsweise möchten Sie vielleicht, dass ein Nutzer ein Objekt steuert, indem er den Controller in der Luft schwenkt. Wenn der Controller eines Nutzers jedoch keine Hardware für Beschleunigungsmesser und Gyroskop hat, funktioniert das Schwenken nicht. Fragen Sie den Controller ab und wechseln Sie zu einem alternativen, verfügbaren Steuerungsschema, wenn die Bewegungserkennung nicht unterstützt wird. Weitere Informationen zum Abfragen von Controller-Funktionen finden Sie unter Controller in verschiedenen Android-Versionen unterstützen.

Geeignete Schaltflächen verwenden

Nicht alle Gamecontroller haben die Schaltflächen „Start“, „Suche“ oder „Menü“. Achten Sie darauf, dass Ihre Benutzeroberfläche nicht von der Verwendung dieser Schaltflächen abhängt.

Mehrere Controller verarbeiten

Wenn mehrere Spieler ein Spiel spielen, jeder mit seinem eigenen Controller, ist es wichtig, jedes Spieler-Controller-Paar zuzuordnen. Informationen zum Implementieren der Controller-Nummer Identifikation finden Sie unter getControllerNumber().

Verbindungsabbrüche von Controllern verarbeiten

Wenn die Verbindung zu einem Controller während des Spiels getrennt wird, pausieren Sie das Spiel und zeigen Sie ein Dialogfeld an, in dem der Nutzer aufgefordert wird, die Verbindung zum Controller wiederherzustellen.

Geben Sie im Dialogfeld auch Tipps zur Fehlerbehebung. Fordern Sie den Nutzer beispielsweise auf, die Bluetooth-Verbindung zu überprüfen. Weitere Informationen zum Implementieren der Unterstützung für Eingabegeräte finden Sie unter Controller-Aktionen verarbeiten und der Bluetooth-Übersicht.

Controller-Anleitung anzeigen

Wenn Ihr Spiel eine visuelle Anleitung für die Steuerung bietet, verwenden Sie ein Controller-Bild ohne Branding und fügen Sie nur Schaltflächen hinzu, die mit Android kompatibel sind.

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

Abbildung 1. Beispiel für eine Controller-Anleitung mit der Android TV Gamepad Template.