声明一个TV Activity
一个应用想要运行在TV设备中,必须在它的manifest中定义一个启动activity,用intent filter包含CATEGORY_LEANBACK_LAUNCHER。这个filter表明你的应用是在TV上可用,并且为Google Play上发布TV应用所必须。定义这个intent也意味着点击主屏幕的应用图标时,就是打开的这个activity。
接下来的代码片段显示如何在manifest中包含这个intent filter:
<application
android:banner="@drawable/banner" >
...
<activity
android:name="com.example.android.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.example.android.TvActivity"
android:label="@string/app_name"
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>
</application>
例子中第二个activity manifest定义的activity是TV设备中的一个启动入口。
Caution:如果在你的应用中不包含CATEGORY_LEANBACK_LAUNCHER intent filter,它不会出现在TV设备的Google Play商店中。并且,即使你把不包含此filter的应用用开发工具装载到TV设备中,应用仍然不会出现在TV用户界面上。
如果你正在为TV设备修改现有的应用,就不应该与手机和平板用同样的activity布局。TV的用户界面(或者现有应用的TV部分)应该提供一个更简单的界面,更容易坐在沙发上用遥控器操作。TV应用设计指南,参考TV Design指导。查看TV界面布局的最低要求,参考:Building TV Layouts。
声明Leanback支持
Android TV需要你的应用使用Leanback用户界面。如果你正在开发一个运行在移动设备(手机,可穿戴,平板等等)也包括TV的应用,设置required
属性为false
。因为如果设置为true
,你的应用将仅能运行在用Leanback UI的设备上。
<manifest>
<uses-feature android:name="android.software.leanback"
android:required="false" />
...
</manifest>
声明不需要触屏
运行在TV设备上的应用不依靠触屏去输入。为了清楚表明这一点,TV应用的manifest必须声明android.hardware.touchscreen
为不需要。这个设置表明应用能够工作在TV设备上,并且也是Google Play认定你的应用为TV应用的要求。接下来的示例代码展示这个manifest声明:
<manifest>
<uses-feature android:name="android.hardware.touchscreen"
android:required="false" />
...
</manifest>
Caution:必须在manifest中声明触屏是不需要的,否则应用不会出现在TV设备的Google Play商店中。
提供一个主屏幕横幅
如果应用包含一个Leanback的intent filter,它必须提供每个语言的主屏幕横幅。横幅是出现在应用和游戏栏的主屏的启动点。在manifest中这样描述横幅:
<application
...
android:banner="@drawable/banner" >
...
</application>
在application
中添加android:banner
属性为所有的应用activity提供默认的横幅,或者在特定activity的activity
中添加横幅。
在UI模式和TV设计指导中查看Banners。