TV デバイスには、アプリとやり取りするためのセカンダリ ハードウェア デバイスが必要です。これは基本的な基本的な リモコンやゲーム コントローラで操作できます。そのため、アプリは十字キー(D-pad)による入力をサポートする必要があります。 また、アプリはコントローラがオフラインになったり、複数のコントローラからの入力を処理したりする必要がある場合があります。 あります。
このガイドでは、TV デバイスのコントローラを処理するための要件について説明します。
D-pad の最低限の操作
TV デバイスのデフォルトのコントローラは D-pad です。一般にアプリは、Android または iOS デバイスで 上下左右、選択、戻る、ホームの各ボタンのみを備えたリモコンです。アプリが 通常、追加のコントロールを備えたゲーム コントローラが必要です。 D-pad コントロールのみでゲームプレイをサポートしようとします。それ以外の場合は、ユーザーに コントローラが必要で、ユーザーが D-pad コントローラを使ってゲームを適切に終了できるようにします。
TV デバイスの D-pad コントローラを使用したナビゲーションについて詳しくは、 テレビのナビゲーション
コントローラの接続解除を処理する
テレビ用のコントローラは Bluetooth デバイスであることが多く、定期的に電力の節約を試みることがあります。 おやすみモードになり、テレビデバイスとの接続が解除されます。つまり、あるアプリが これらの再接続イベントを処理するように構成されていない場合は、中断または再起動されます。これらのイベントは 次のいずれかの状況で発生する可能性があります。
- 数分間の動画が再生されている間に、D-pad またはゲーム コントローラがスリープモードになり、テレビデバイスとの接続を解除して、後で再接続する場合があります。
- ゲームプレイ中、新しいプレーヤーは、ゲーム コントローラを使用してゲームに参加することがあります。 まだ接続されていません。
- ゲームプレイ中、プレーヤーがゲームを離れ、ゲーム コントローラの接続を解除することがあります。
接続解除イベントと再接続イベントの対象となる TV アプリのアクティビティは、 アプリ マニフェストで再接続イベントを処理します。次のコードサンプルは、 キーボードやナビゲーション デバイスを含む構成の変更を処理するアクティビティを有効にする 接続、切断、再接続:
<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>
この構成変更により、再接続後もアプリは実行を継続できます。 イベントとして認識されます。Android フレームワークによって ユーザーエクスペリエンスが向上します
さまざまな D-pad 入力を処理する
TV デバイスのユーザーは、テレビと一緒に複数のタイプのコントローラを使用していることがあります。対象 たとえば、ユーザーが基本的な D-pad コントローラとゲーム コントローラの両方を使用する場合です。キーコード D-pad の機能で使用されるときにゲーム コントローラから提供される通知は、 送信されるコードを暗号化します。
D-pad による入力の変化に対応し、ユーザーが アプリを操作するためにコントローラを切り替える必要がある。Cloud Monitoring で 入力バリエーションについては、をご覧ください。 十字キーによる入力を処理する
ボタンイベントを処理する
ユーザーがコントローラのボタンをクリックすると、アプリは
KeyEvent
。意図された
ボタンの動作は、再生、一時停止、停止などのメディア イベントの場合もあれば、
選択します。優れたユーザー エクスペリエンスを提供するには、一貫した
動作を変更することもできます。
TV UI イベント
KeyEvent
を生成するボタンに TV UI の動作を割り当てる
次の表に示すとおりです。
KeyEvent | 動作 |
---|---|
KEYCODE_BUTTON_B 、KEYCODE_BACK | 戻る |
KEYCODE_BUTTON_SELECT さん、KEYCODE_BUTTON_A さん、KEYCODE_ENTER さん、
KEYCODE_NUMPAD_ENTER KEYCODE_DPAD_CENTER | 選択 |
KEYCODE_DPAD_UP さん、KEYCODE_DPAD_DOWN さん、KEYCODE_DPAD_LEFT さん、
KEYCODE_DPAD_RIGHT | ナビゲーション |
メディア イベント
ユーザーがメディアを視聴しているときに、コンテンツを生成するボタンに動作を割り当てます。
KeyEvent
型を次の表に示します。アプリが
MediaSession
MediaControllerAdapter
を使用する
MediaControllerCompat.TransportControls
のいずれかを呼び出す
表に示すメソッドを使用します。選択ボタンは再生または一時停止として機能します。
ボタンを使用します。
KeyEvent | TransportControls 呼び出し | 動作 |
---|---|---|
BUTTON_SELECT さん、BUTTON_A さん、ENTER さん、
KEYCODE_NUMPAD_ENTER DPAD_CENTER |
play() | 再生 |
BUTTON_START さん、BUTTON_SELECT さん、BUTTON_A さん、
ENTER 、DPAD_CENTER 、KEYCODE_NUMPAD_ENTER |
pause() | 一時停止 |
BUTTON_R1 | skipToNext() | 次へスキップ |
BUTTON_L1 | skipToPrevious() | 前へスキップ |
DPAD_RIGHT さん、BUTTON_R2 さん、AXIS_RTRIGGER さん、
AXIS_THROTTLE | fastForward() | 早送り |
DPAD_LEFT さん、BUTTON_L2 さん、AXIS_LTRIGGER さん、
AXIS_BRAKE | rewind() | 巻き戻し |
なし | stop() | 停止 |
注: MediaSession
を使用する場合は、
たとえば、メディア固有のボタンや
KEYCODE_MEDIA_PLAY
または KEYCODE_MEDIA_PAUSE
。
システムが自動的に適切なトリガーを
MediaSession.Callback
メソッドを呼び出します。
[戻る] ボタンを適切に動作させる
[戻る] ボタンは切り替えボタンとしては機能しません。たとえば、デバイスの開閉操作には使用しないでください 選択します。パンくずリスト形式で、プレーヤーの前の画面に戻る場合にのみ使用します。 オンになっています。
[戻る] ボタンは直線的な後方ナビゲーションのみを実行するため、 アプリ内メニューを別のボタンで開いたままにしてアプリに戻ることができます。 [戻る] ボタンを連続して押すと、最終的に Android TV のホーム画面が表示される必要があります。 例: ゲームプレイ >ゲーム一時停止画面 >ゲームのメイン画面 >Android TV のホーム画面 テレビ番組の再生 >TV アプリのメイン画面 >Android TV のホーム画面。
ナビゲーションのデザインについて詳しくは、 「戻る」ナビゲーションと「上へ」ナビゲーションの設計をご覧ください。実装について詳しくは、 適切な「戻る」ナビゲーションを提供する。
ゲームのコントローラを処理する
D-pad 操作をサポートする
D-pad コントロールを中心とした操作方法を計画します。このコントロール セットは、 Android TV デバイスのデフォルト。D-pad はさまざまな場面で使える必要があります。 ゲームの中心的な操作だけでなく、メニューや広告の操作も制御できるようになりました。このため、 Android TV ゲームで、次のような言語のタッチ インターフェースを参照していないことを確認してください 「続けるにはこちらをタップしてください。」
優れたユーザー エクスペリエンスを実現するには、プレーヤーとコントローラの操作方法をどのように変えるかが重要 体験できます次のベスト プラクティスを検討してください。
- コントローラの要件を事前に伝える: Google Play の説明を使用します。 プレーヤーにコントローラに対する期待値を伝える必要があります。ゲームが適した用途に適したものであれば、 D-pad のみのゲームパッドではなく、ジョイスティックを備えたゲームパッドの場合は、この点を明確にしてください。使用するプレーヤーは、 コントローラがゲームに適していないとエクスペリエンスが悪くなり、 評価が低かったとします
- 一貫したボタン マッピングを使用する: 直感的なボタン マッピングが重要 ユーザーエクスペリエンスを損ねますたとえば、A ボタンを使って、一般的な通関規則を遵守します。 [承諾] を選択し、[B] ボタンでキャンセルします。また 柔軟性の高い 再マッピング可能性という形をとりますボタン マッピングについて詳しくは、ハンドルまたは コントローラの操作をご覧ください。
- コントローラの機能を検出して適宜調整する: コントローラをクエリします コントローラとゲームの対戦を最適化する機能についてです。たとえば プレーヤーはコントローラを空中に振ってオブジェクトを操作します。 ただし、 プレーヤーのコントローラに加速度計とジャイロスコープのハードウェアがないため、手を振ることができません。 コントローラをクエリし、モーション検知が検出されない場合は、 代替の制御スキームに切り替えます。詳細情報 詳細については、サポート コントローラをサポートしています。
適切なボタンを使用する
ゲーム コントローラの中には、スタートボタン、検索ボタン、メニューボタンがないものもあります。UI が依存関係に 使用上の注意が必要となります。
複数のコントローラを処理する
複数のプレーヤーがそれぞれ独自のコントローラを使用してゲームをプレイする場合は、
各プレーヤーとコントローラのペアをマッピングします。コントローラ番号を実装する方法については、
については、をご覧ください。
getControllerNumber()
。
コントローラの接続解除を処理する
ゲームプレイの途中でコントローラの接続が切断された場合は、ゲームを一時停止し、 接続を解除したプレーヤーにコントローラの再接続を求めるダイアログ。
また、ダイアログでトラブルシューティングのヒントを提示します。たとえば、 [Bluetooth 接続をご確認ください] が表示されます。Input-device の実装について詳しくは、 コントローラを処理する アクションと、 Bluetooth の概要
コントローラの操作説明を表示する
ゲームで視覚的なゲーム操作の手順を提供する場合は、 コントローラの画像にはブランド名がなく、Android と互換性のあるボタンのみが含まれています。
Android 互換コントローラのサンプル画像については、 Android TV Gamepad Template(ZIP) 黒の背景に白いコントローラ、白地に黒いコントローラがある PNG ファイルおよび Adobe Illustrator®ファイルとして 提供されます
![](https://developer.android.com/static/images/games/game-controller-buttons_2x.png?authuser=0000&hl=ja)
図 1. を使用したコントローラの手順の例 Android TV ゲームパッド テンプレート。