使用 Flutter 创建 Android TV 应用
横幅(banner)
如果应用包含 Leanback 启动器 intent 过滤器,那么它必须针对每种本地化语言提供一张主屏幕横幅图片。横幅是一个像素大小为 320x180 的图片。创建后,将其命名为 banner.png,并将其复制到 android/app/src/main/res/drawable
文件夹。
您可以将 android:banner
属性与 <application>
标记一起使用,为所有应用 Activity 提供默认横幅,也可以将其与 <activity>
标记一起使用,为特定 Activity 提供横幅。
1<application
2 android:banner="@drawable/banner">
3 ...
4</application>
活动(Activity)
目标平台为 TV 设备的应用必须在其清单中声明 TV 启动器 Activity。它使用 CATEGORY_LEANBACK_LAUNCHER
intent 过滤器来执行此操作。此过滤器可将您的应用标识为支持 TV 平台,并让 Google Play 将其识别为 TV 应用。当用户在其 TV 主屏幕上选择您的应用时,此 intent 可确定要启动的 Activity。
如果您的应用没有此过滤器,那么当您使用开发者工具将其加载到 TV 设备上时,该应用不会出现在 TV 界面中。
1 <activity
2 android:name="com.example.android.TvActivity"
3 android:label="@string/app_name"
4 android:theme="@style/Theme.Leanback">
5 <intent-filter>
6 <action android:name="android.intent.action.MAIN" />
7 <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
8 </intent-filter>
9</activity>
Leanback UI
声明您的应用使用 Android TV 所要求的 Leanback UI
。如果您要开发一款在移动设备(手机、穿戴式设备、平板电脑等)以及 Android TV 上都可运行的应用,请将 required 属性值设为 false。如果您将 required 属性值设为 true,您的应用将只能在使用 Leanback 界面的设备上运行。
1<manifest>
2 <uses-feature android:name="android.software.leanback"
3 android:required="false" />
4 ...
5</manifest>
触摸屏
目标平台为 TV 设备的应用不依赖于触摸屏进行输入。为明确这一点,TV 应用的清单必须声明 android.hardware.touchscreen
功能为非必备功能。此设置会将您的应用标识为能够在 TV 设备上工作,这也是您的应用在 Google Play 中被视为 TV 应用的必要条件。
1<manifest>
2 <uses-feature android:name="android.hardware.touchscreen"
3 android:required="false" />
4 ...
5</manifest>
相关补充
Intent(意图)是一个消息传递对象,可以用来从其他应用组件请求操作。Intent 通过多种方式促进组件之间的通信,是 Android 通信的桥梁。
- 资料 A:https://www.runoob.com/w3cnote/android-tutorial-intent-base.html
- 资料B:https://developer.android.com/training/tv/start/start