TV 应用使用的结构与手机和平板电脑应用相同。这种相似性意味着 修改现有应用,使其也能在 TV 设备上运行,或者根据已有的应用创建新应用 了解如何构建 Android 应用。
重要提示:应用必须满足特定要求才能 成为 Google Play 上的 Android TV 应用。如需了解详情,请参阅所列的要求 TV 应用质量
本指南介绍了如何准备用于构建 TV 应用的开发环境以及 使应用能够在电视设备上运行所需的最低更改。
如需了解如何设计 TV 应用,请参阅针对 TV。另请参阅 Android TV GitHub 代码库。
确定媒体格式支持
请参阅以下文档,了解编解码器、协议和格式 支持的设备:
设置 TV 项目
本部分介绍了如何设置 TV 项目,无论您是 修改现有的 Android 应用以使其在 TV 设备上运行,或创建 一款新的电视应用。如果您已有 Android 应用,添加 Android TV 支持可让您设计 TV 界面,同时重复使用现有应用架构。
在创建在 TV 设备上运行的应用时,您需要使用两个主要组件:
- 适用于 TV 的 activity:在应用清单中, 声明一个旨在在 TV 设备上运行的 activity。
- TV 库:(可选)添加一个或多个 androidx 库 适用于 TV 设备,详见本指南的其他部分。 这些库提供了用于构建界面的微件。
前提条件
在开始构建 TV 应用之前,您必须执行以下步骤:
-
将您的 SDK 工具更新到 24.0.0 或更高版本。
借助更新后的 SDK 工具,您可以构建和测试 TV 应用。 - 将您的 SDK 更新为 Android 5.0 (API 21) 或更高版本。
更新后的平台版本提供了新的 TV 应用 API。 -
创建或更新您的应用项目。
如需访问新的 TV 设备 API,请创建一个项目或修改现有项目 以 Android 5.0(API 级别 21)或更高版本为目标平台的项目。
声明 TV Activity
旨在于 TV 设备上运行的应用必须声明 TV 启动器 Activity
。它使用 CATEGORY_LEANBACK_LAUNCHER
intent
过滤器来实现这一目的。此过滤器可将您的应用标识为适用于 TV 平台,
Google Play 将其标识为 TV 应用。当用户在其 TV 主屏幕上选择您的应用时,
此 intent 可确定要启动的 activity。
以下代码段展示了如何在清单中添加此 intent 过滤器:
<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 清单条目指定 在电视设备上启动的应用
注意:如果您不添加
CATEGORY_LEANBACK_LAUNCHER
intent 过滤器
您的应用,那么在电视设备上运行 Google Play 的用户无法看到该应用。此外,如果您的
当您使用开发者工具将其加载到 TV 设备上时,该应用便不会包含此过滤器,
不会出现在 TV 界面中。
TV 应用或现有应用的 TV 部分必须提供简单的界面以方便导航 在 10 英尺外的遥控器使用遥控器如果您要修改现有应用以便在电视上使用,请不要使用现有应用 适用于手机和平板电脑的 TV 的 activity 布局。如需了解有关设计 TV 应用的准则,请参阅 Design for TV。
声明 TV 设备支持
通过声明
android.software.leanback
功能。
如果您的应用同时在移动设备和电视上运行,请将 required
属性值设为
false
。如果将 required
属性值设置为 true
,
Google Play 只会将您的应用提供给 Android TV OS。
<manifest> <uses-feature android:name="android.software.leanback" android:required="false" /> ... </manifest>
将触摸屏声明为非必备条件
目标平台为 TV 设备的应用不依靠触摸屏进行输入。
为明确这一点,您的 TV 应用的清单必须声明
“android.hardware.touchscreen
”功能不是必需的。此设置会将您的应用标识为
能够在电视设备上运行,并且应用必须具备在 Google 中被视为电视应用的条件
开始游戏。以下代码示例展示了如何添加此清单声明:
<manifest> <uses-feature android:name="android.hardware.touchscreen" android:required="false" /> ... </manifest>
注意:您必须在应用清单中声明并非必须使用触摸屏, 如以下示例代码所示。否则,您的应用不会出现在 Google Play 电视版上 设备。
提供主屏幕图标和横幅
Android TV 应用必须针对每种本地化版本提供主屏幕图标和横幅图片。 应用启动时会使用图标或横幅,具体取决于 Android TV 设备 主屏幕的应用和游戏行中。
如需将其添加到您的应用中,请按如下方式在清单中描述图标和横幅:
<application ... android:icon="@mipmap/ic_launcher" android:banner="@drawable/banner" > ... </application>
主屏幕图标
与所有 Android 应用一样,Android TV 应用也必须提供主屏幕图标。如需了解 为您的应用设计绝佳的发布点以及详细的资源要求,请参阅 Android TV 应用图标和横幅 指南。
主屏幕横幅
使用 android:banner
属性替换为 <application>
标记),为所有应用 Activity 提供默认横幅,或者使用
<activity>
代码用于为特定活动提供横幅。
对于横幅,请使用尺寸为 320 x 180 像素的 xhdpi 资源。文本必须包含在 图片。如果您的应用有多个语言版本,那么您必须分别提供 带文字的横幅。
更改启动器颜色
注意:在 Android 12 及更高版本中,使用
Android TV 应用不支持 SplashScreen
平台 API。
当 TV 应用启动时,系统会显示类似于展开式、填充
圆圈。如需自定义此动画的颜色,请设置 android:colorPrimary
属性为特定颜色。另外,设置两个
将重叠属性转换为 true
,如以下代码段所示,
主题资源 XML 文件:
<resources> <style ... > <item name="android:colorPrimary">@color/primary</item> <item name="android:windowAllowReturnTransitionOverlap">true</item> <item name="android:windowAllowEnterTransitionOverlap">true</item> </style> </resources>
如需详细了解如何使用主题和样式,请参阅 样式和主题。
构建 Android TV OS 应用
Jetpack 包含用于 TV 应用的 androidx 软件包库。
Compose for TV
建议使用 Compose 构建适用于 Android TV OS 的应用。与核心 Compose 搭配使用 库,Compose for TV 库提供了专为 大屏幕:
请参阅在 Android TV 上使用 Jetpack Compose,了解如何使用 Compose for TV 构建 TV 应用。
Leanback 界面工具包
Leanback UI 工具包为电视设备提供 API 和用户界面小部件:
androidx.leanback.app
androidx.leanback.database
androidx.leanback.graphics
androidx.leanback.media
androidx.leanback.preference
androidx.leanback.system
androidx.leanback.widget
androidx.leanback.widget.picker
了解如何在 Leanback 中使用 Leanback UI 工具包构建 TV 应用 构建 TV 播放应用。
运行 TV 应用
运行您的应用是开发过程的一个重要环节。您可以在 配置为支持 USB 调试或使用虚拟电视设备的电视设备。
在实体设备上运行
按照以下步骤设置您的 TV 设备:
- 使用 USB 数据线将您的 TV 设备连接到开发计算机。如有需要 请参阅设备制造商提供的文档。
- 在您的 TV 设备上,转到设置。
- 在设备行中,选择关于。
- 滚动到 Build 并选择 Build 数次,直到您收到消息 “您现在处于开发者模式!”
- 返回设置。在偏好设置行中,选择开发者选项。
- 依次选择调试 > USB 调试,然后选择开启。
- 返回 TV 主屏幕。
要在 TV 设备上测试您的应用,请执行以下操作:
- 在 Android Studio 中,选择您的项目,然后点击 运行 。
- 在选择部署目标窗口中, 选择您的电视设备,然后点击 OK。
在虚拟设备上运行
Android 中的 AVD 管理器 SDK 提供了设备定义,可让您创建用于运行和 测试您的应用
如需创建虚拟 TV 设备,请执行以下操作:
- 启动 AVD 管理器。如需了解详情,请参阅 创建和管理虚拟设备。
- 在 AVD Manager 对话框中,点击 Device Definitions 标签。
- 选择其中一个 Android TV 设备定义,然后点击 Create AVD。
- 选择模拟器选项,然后点击 OK 以创建 AVD。
注意:为使 TV 模拟器设备达到最佳性能,请使用 x86 模拟器 然后启用使用主机 GPU 选项。也要使用虚拟设备加速 可用。如需详细了解模拟器的硬件加速,请参阅 针对 Android 模拟器。
如需在虚拟 TV 设备上测试您的应用,请执行以下操作:
- 在 Android Studio 中,选择您的项目,然后点击 运行 。
- 在选择部署目标窗口中, 选择您的虚拟电视设备,然后点击 OK。
有关使用模拟器的详情,请参阅 在 Android 模拟器上运行应用。如需详细了解如何将应用从 Android Studio 部署到虚拟环境, 请参阅调试应用。
让您的 TV 应用以免安装体验的形式运行
免安装体验使用户 来试用您的 TV 应用,并有助于提高采用率。
如需将您的 TV 应用设置为在 Android TV 设备或模拟器上作为免安装应用运行,请执行以下操作: 首先,请按照说明 创建支持免安装体验的 app bundle。
接下来,在 TV 应用的 intent-filter
中
MainActivity
,请确保 LAUNCHER
和
在 AndroidManifest.xml
中声明了 LEANBACK_LAUNCHER
:
<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" /> <category android:name="android.intent.category.LEANBACK_LAUNCHER" /> </intent-filter> </activity>
您的 TV 应用现已配置为运行免安装体验。
准备要发布您的 TV 应用
查看 TV 应用核对清单,了解后续步骤 以便为发布和分发 TV 应用做好准备。