电视设备需要一个辅助硬件设备来与应用程序进行交互,形式为基本的遥控器或游戏控制器。 这意味着您的应用必须支持D-pad输入。 这也意味着你的应用程序可能需要处理离线的控制器,以及来自多种类型的控制器的输入。
本课讨论处理电视设备控制器的要求。
D-pad最低限度的控制
电视设备的默认控制器是D-pad。 一般来说,您的应用程序应该可以从仅具有上,下,左,右,选择,后退和主页按钮的遥控器操作。 如果您的应用程序是通常需要带有附加控件的游戏控制器的游戏,则您的应用程序应尝试使用这些D-pad控件进行游戏。 在这种情况下,您的应用程序还应警告用户需要控制器,并允许他们使用D-pad控制器优雅地退出游戏。 有关使用电视设备的D-pad控制器进行导航的更多信息,请参阅创建电视导航 。
手柄控制器断开连接
电视控制器通常是蓝牙设备,它可能会尝试通过定期进入睡眠模式和断开电视设备来节省电量。 这意味着如果应用程序未配置为处理这些重新连接事件,则可能会中断或重新启动应用程序。 这些事件可能发生在以下任何情况下:
- 在观看几分钟长的视频时,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输入变化
电视设备用户可能有多种类型的控制器,他们使用他们的电视。 例如,用户可能同时拥有基本的D-pad控制器和游戏控制器。 游戏控制器在用于D-pad功能时提供的键码可能与物理D-pad发送的键码不同。
你的应用程序应该处理来自游戏控制器的D-pad输入的变化,所以用户不必物理地切换控制器来操作你的应用程序。 有关处理这些输入变化的更多信息,请参阅