1、声明为TV应用
使用 CATEGORY_LEANBACK_LAUNCHER
intent 过滤器标识为支持 TV 平台,并让 Google Play 将其识别为 TV 应用。在清单文件中声明,并会将对应的activity作为启动activity。
声明 Leanback 支持
清单文件将required
属性值设为 false,手机、平板和Android tv上都能运行
。将 required
属性值设为 true
,应用只能在使用 Leanback 界面的设备上运行。
<uses-featureandroid:name="android.software.leanback"android:required="true" />
将触摸屏声明为非必备条件
清单必须声明 android.hardware.touchscreen
功能为非必备功能,如
<manifest><uses-feature android:name="android.hardware.touchscreen"android:required="false" />...</manifest>
提供主屏幕横幅
Leanback应用必须针对每种本地化语言提供一张主屏幕横幅图片。横幅是显示在主屏幕上的图标。横幅应该是 xhdpi 资源,尺寸为 320 x 180 像素。
<applicationandroid:allowBackup="false"android:banner="@drawable/videos_by_google_banner"
处理不支持的硬件功能
不支持的 TV 硬件功能
TV 的用途不同于其他设备,因此它们没有其他 Android 设备通常具备的硬件功能。因此,Android 系统在 TV 设备上不支持以下功能:
声明对 TV 的硬件要求
在应用清单中声明硬件功能要求,确保不会将其安装在不提供这些功能的设备上。如果您的应用使用了 TV 上不提供的硬件功能(如触摸屏或相机),但不使用这些功能仍可运行,请修改应用的清单文件,以指明这些功能并非应用必需的功能。
<uses-feature android:name="android.hardware.touchscreen"android:required="false"/><uses-feature android:name="android.hardware.faketouch"android:required="false"/><uses-feature android:name="android.hardware.telephony"android:required="false"/><uses-feature android:name="android.hardware.camera"android:required="false"/><uses-feature android:name="android.hardware.nfc"android:required="false"/><uses-feature android:name="android.hardware.location.gps"android:required="false"/><uses-feature android:name="android.hardware.microphone"android:required="false"/><uses-feature android:name="android.hardware.sensor"android:required="false"/>
创建方向键导航
Android tv设备不支持触摸屏,通过遥控器设备上的按钮进行导航。Android 框架会自动处理布局元素之间的方向导航,也可以使用显式导航属性。下表列出了 Android 界面微件的所有可用导航属性:
当应用获取到焦点选中应 实现针对获得焦点的控件和选定控件的突出显示,
<!-- res/drawable/button.xml --><?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:state_pressed="true"android:drawable="@drawable/button_pressed" /> <!-- pressed --><item android:state_focused="true"android:drawable="@drawable/button_focused" /> <!-- focused --><item android:state_hovered="true"android:drawable="@drawable/button_focused" /> <!-- hovered --><item android:drawable="@drawable/button_normal" /> <!-- default --></selector>