Gestire i controller TV

I dispositivi TV richiedono un dispositivo hardware secondario per interagire con le app, uno strumento di base un telecomando o un controller di gioco. Pertanto, la tua app deve supportare l'input del d-pad. Inoltre, l'app potrebbe dover gestire i controller che vanno offline e l'input da più di un controller tipo di controller.

Questa guida illustra i requisiti per la gestione dei controller per i dispositivi TV.

Controlli minimi D-pad

Il controller predefinito per un dispositivo TV è un D-pad. In generale, l'app deve essere azionabile da un con i tasti Su, Giù, sinistra, destra, Seleziona, Indietro e Home. Se la tua app è un gioco che in genere richiede un controller con controlli aggiuntivi, tentano di supportare il gameplay solo con questi controlli D-pad. In caso contrario, avvisa l'utente che serve un controller e consenti loro di uscire dal gioco con grazia usando il controller D-pad.

Per ulteriori informazioni sulla navigazione con i controller D-pad per i dispositivi TV, vedi Navigazione TV.

Maniglia il controller si disconnette

I controller per la TV sono spesso dispositivi Bluetooth, che potrebbero tentare di risparmiare energia periodicamente entra in modalità di sospensione e si disconnette dal dispositivo TV. Ciò significa che un'app potrebbe essere interrotto o riavviato, se non è configurato per gestire questi eventi di riconnessione. Questi eventi può verificarsi in una delle seguenti circostanze:

  • Mentre viene riprodotto un video di diversi minuti, puoi usare un D-pad o un gioco potrebbe entrare in modalità di sospensione, disconnettersi dal dispositivo TV e riconnettersi in un secondo momento.
  • Durante il gameplay, un nuovo giocatore potrebbe partecipare al gioco utilizzando un controller di gioco non è già connesso.
  • Durante il gameplay, un giocatore potrebbe uscire dal gioco e scollegare un controller di gioco.

Qualsiasi attività nelle app TV soggetta a eventi di disconnessione e riconnessione deve essere configurata su gestire gli eventi di riconnessione nel file manifest dell'app. Il seguente esempio di codice mostra come attivare un'attività per gestire le modifiche alla configurazione, ad esempio una tastiera o un dispositivo di navigazione connessione, disconnessione o riconnessione:

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

Questa modifica alla configurazione consente all'app di continuare a essere eseguita tramite una riconnessione piuttosto che essere riavviato dal framework Android, che non è un una buona esperienza utente.

Gestire le variazioni di input del D-pad

Gli utenti di dispositivi TV potrebbero avere più di un tipo di controller da utilizzare con la TV. Per Ad esempio, un utente potrebbe avere sia un controller D-pad di base sia un controller di gioco. I codici chiave fornito da un controller di gioco quando viene utilizzato per le funzioni D-pad potrebbe variare rispetto inviati da un D-pad di base.

Gestire le variazioni dell'input con il D-pad in modo che l'utente non devi cambiare controller per utilizzare l'app. Per ulteriori informazioni sulla gestione varianti di input, consulta Elabora l'input del d-pad.

Gestisci gli eventi del pulsante

Quando l'utente fa clic su un pulsante su un controller, la tua app riceve un evento con un KeyEvent. L'oggetto il comportamento del pulsante potrebbe essere un evento multimediale, ad esempio riproduzione, pausa o interruzione, oppure un evento di tipo TV, ad esempio selezione o navigazione. Per offrire una buona esperienza utente, assegna in modo coerente il comportamento dei pulsanti del controller.

Eventi UI TV

Assegna il comportamento dell'interfaccia utente TV ai pulsanti che generano KeyEvent di fatturazione, come illustrato nella tabella seguente:

KeyEventComportamento
KEYCODE_BUTTON_B, KEYCODE_BACKIndietro
KEYCODE_BUTTON_SELECT, KEYCODE_BUTTON_A, KEYCODE_ENTER KEYCODE_DPAD_CENTER KEYCODE_NUMPAD_ENTERSelezione
KEYCODE_DPAD_UP, KEYCODE_DPAD_DOWN, KEYCODE_DPAD_LEFT KEYCODE_DPAD_RIGHTNavigazione

Eventi multimediali

Quando l'utente sta guardando contenuti multimediali, assegna un comportamento ai pulsanti che generano Tipi di KeyEvent, come mostrato nella seguente tabella. Se l'app controlla un MediaSession, usa un MediaControllerAdapter per chiamare uno dei MediaControllerCompat.TransportControls illustrati nella tabella. Tieni presente che i pulsanti di selezione funzionano come Riproduci o Pausa pulsanti in questo contesto.

KeyEventChiamata TransportControlsComportamento
BUTTON_SELECT, BUTTON_A, ENTER DPAD_CENTER KEYCODE_NUMPAD_ENTER play()Riproduci
BUTTON_START, BUTTON_SELECT, BUTTON_A ENTER, DPAD_CENTER e KEYCODE_NUMPAD_ENTER pause()Metti in pausa
BUTTON_R1skipToNext()Passa ai contenuti successivi
BUTTON_L1skipToPrevious()Passa ai contenuti precedenti
DPAD_RIGHT, BUTTON_R2, AXIS_RTRIGGER AXIS_THROTTLEfastForward()Avanti veloce
DPAD_LEFT, BUTTON_L2, AXIS_LTRIGGER AXIS_BRAKErewind()Riavvolgi
N/Dstop()Interrompi

Nota: se utilizzi MediaSession, non sostituire la gestione delle pulsanti specifici dei contenuti multimediali, KEYCODE_MEDIA_PLAY o KEYCODE_MEDIA_PAUSE. Il sistema attiva automaticamente MediaSession.Callback .

Fornire il comportamento appropriato del pulsante Indietro

Il pulsante Indietro non deve mai fungere da pulsante di attivazione/disattivazione. Ad esempio, non utilizzarlo per aprire e chiudere una o dal menu Fogli Google. Usalo solo per andare indietro, in stile breadcrumb, tra le schermate precedenti in cui il player è stata attivata.

Poiché il pulsante Indietro esegue solo la navigazione lineare e a ritroso, puoi utilizzare per lasciare un menu in-app aperto da un pulsante diverso e tornare all'app. La pressione consecutiva del pulsante Indietro deve sempre indirizzare alla schermata Home di Android TV. Ad esempio: gameplay > Schermata di pausa del gioco > schermata principale del gioco > Schermata Home di Android TV o Riproduzione di programmi TV > Schermata principale dell'app TV > Schermata Home di Android TV.

Per ulteriori informazioni sulla progettazione per la navigazione, vedi Progettazione della navigazione Back and Up. Per saperne di più sull'implementazione, consulta Offrire una navigazione a ritroso adeguata.

Gestisci i controller per i giochi

Supporto dei controlli del D-pad

Pianifica lo schema di controllo in base a un controllo D-pad, poiché questo insieme è predefinita per i dispositivi Android TV. Il player deve essere in grado di usare un D-pad per tutti gli aspetti del non solo per controllare il gameplay principale, ma anche per navigare tra i menu e gli annunci. Per questo motivo, assicurati che il tuo gioco per Android TV non faccia riferimento a un'interfaccia touch con linguaggio come "Tocca qui per continuare."

Il modo in cui modifichi l'interazione del giocatore con il controller può essere fondamentale per ottenere ottimi risultati un'esperienza senza intervento manuale. Prendi in esame queste best practice:

  • Comunica in anticipo i requisiti del controller: usa la descrizione di Google Play comunicare al giocatore eventuali aspettative in merito ai controller. Se un gioco è più adatto un gamepad con un joystick piuttosto che uno con un solo D-pad, spiegalo chiaramente. Un giocatore che usa un controller non adatto per un gioco potrebbe avere un'esperienza scadente e dare al tuo una valutazione negativa.
  • Utilizza una mappatura dei pulsanti coerente: è fondamentale avere una mappatura dei pulsanti intuitiva per una buona esperienza utente. Ad esempio, rispetta le dogane accettate utilizzando il pulsante A per accettare e il pulsante B per annullare. Puoi anche offrire flessibilità sotto forma di rimappabilità. Per ulteriori informazioni sulla mappatura dei pulsanti, vedi Handle azioni del controller.
  • Rileva le funzionalità del controller e apporta le modifiche necessarie: esegui una query sul controller. sulle sue funzionalità di ottimizzazione della corrispondenza tra controller e gioco. Ad esempio: è probabile che un giocatore muova in aria il controller ma se sul controller del lettore non è presente un hardware con accelerometro e giroscopio, la funzione sventola non funziona. Esegui una query sul controller e, se il rilevamento dei movimenti non è supportati, passare a uno schema di controllo alternativo e disponibile. Per ulteriori informazioni sulle funzionalità di query del controller, vedi Assistenza più versioni di Android.

Usa i pulsanti appropriati

Non tutti i controller di gioco offrono i pulsanti Start, Cerca o Menu. Assicurati che la tua UI non dipenda sull'uso di questi pulsanti.

Gestire più controller

Quando più giocatori stanno giocando, ognuno con il proprio controller, è importante mappa ogni coppia giocatore-controller. Per informazioni su come implementare controller-number di identificazione, consulta getControllerNumber().

Maniglia il controller si disconnette

Quando un controller viene scollegato durante il gameplay, metti in pausa il gioco e mostra un che chiede al giocatore disconnesso di ricollegare il controller.

Inoltre, nella finestra di dialogo fornisci suggerimenti per la risoluzione dei problemi. Ad esempio, indica player e selezionare "Controlla la connessione Bluetooth". Per ulteriori informazioni sull'implementazione vedi Gestire il controller azioni e Panoramica Bluetooth.

Mostra istruzioni per il controller

Se il gioco fornisce istruzioni visive per il controllo, usa un dell'immagine del controller priva di branding e includi solo pulsanti compatibili con Android.

Per immagini di esempio di un controller compatibile con Android, scarica il Modello Gamepad per Android TV (ZIP). Include un controller bianco su sfondo nero e un controller nero su uno sfondo bianco come file PNG e Adobe® Illustrator®, mostrato nella Figura 1.

Figura 1. Esempi di istruzioni del controller utilizzando Modello per Android TV Gamepad.