TV 应用使用入门

TV 应用使用的结构与手机和平板电脑的应用相同。这种相似性意味着,您可以修改现有应用,使其同样可以在 TV 设备上运行,也可以根据您在构建 Android 应用方面已有的知识来创建新应用。

重要提示:您的应用必须符合特定要求,才有资格成为 Google Play 上的 Android TV 应用。如需了解详情,请参阅 TV 应用质量中所列的要求。

本课介绍如何为构建 TV 应用准备您的开发环境,以及至少需要做出哪些更改才能使应用可以在 TV 设备上运行。

您还应阅读 TV 设计构建 TV 布局。此外,还可尝试 Android TV GitHub 代码库中的 Android Leanback 示例应用。

确定媒体格式支持

如需了解 Android TV 支持的编解码器、协议和格式,请参阅以下文档。

设置 TV 项目

本部分介绍如何修改现有 Android 应用以使其在 TV 设备上运行或创建新应用。如果您已有 Android 应用,那么添加 Android TV 支持可让您设计 TV 的界面,同时重复使用现有的应用架构。

下面是创建在 TV 设备上运行的应用时应使用的主要组件:

  • TV Activity(必需)- 在您的应用清单中,声明想要在 TV 设备上运行的 Activity。
  • TV 库(可选)- 有几个可用于 TV 设备的 androidx 库,它们提供了用于构建界面的微件。

前提条件

在开始构建 TV 应用之前,您必须:

声明 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 清单条目将该 Activity 指定为要在 TV 设备上启动的 Activity。

注意:如果您不在应用中包含 CATEGORY_LEANBACK_LAUNCHER intent 过滤器,那么用户在 TV 设备上运行 Google Play 时将看不到您的应用。此外,如果您的应用没有此过滤器,那么当您使用开发者工具将其加载到 TV 设备上时,该应用不会出现在 TV 界面中。

如果您要修改现有应用以使其能够在 TV 设备上使用,那么您的应用对 TV 设备使用的 Activity 布局不应与对手机和平板电脑使用的布局相同。TV 应用(或现有应用的 TV 部分)的界面应提供更简单的界面,让用户能够坐在沙发上使用遥控器轻松导航。如需了解有关设计 TV 应用的准则,请参阅 TV 设计指南。如需详细了解 TV 界面布局的最低实现要求,请参阅构建 TV 布局

声明 Leanback 支持

声明您的应用使用 Android TV 所要求的 Leanback 界面。如果您要开发一款在移动设备(手机、穿戴式设备、平板电脑等)以及 Android TV 上都可运行的应用,请将 required 属性值设为 false。如果您将 required 属性值设为 true,您的应用将只能在使用 Leanback 界面的设备上运行。

    <manifest>
        <uses-feature android:name="android.software.leanback"
            android:required="false" />
        ...
    </manifest>
    

将触摸屏声明为非必备条件

想要在 TV 设备上运行的应用不依赖于触摸屏进行输入。为明确这一点,您必须在 TV 应用的清单中声明 android.hardware.touchscreen 功能并非必备功能。此设置会将您的应用标识为能够在 TV 设备上工作,也是在 Google Play 中将您的应用视为 TV 应用的必备条件。以下代码示例展示了如何添加此清单声明:

    <manifest>
        <uses-feature android:name="android.hardware.touchscreen"
                  android:required="false" />
        ...
    </manifest>
    

注意:您必须在应用清单中声明触摸屏并非必备条件(如本示例代码中所示),否则您的应用将不会出现在 TV 设备上的 Google Play 中。

如果应用包含 Leanback 启动器 intent 过滤器,那么它必须针对每种本地化语言提供一张主屏幕横幅图片。横幅是出现在主屏幕的应用和游戏行中的应用启动点。要向您的应用添加横幅,请在清单中描述横幅,如下所示:

    <application
        ...
        android:banner="@drawable/banner" >

        ...
    </application>
    

您可以将 android:banner 属性与 <application> 标记一起使用,为所有应用 Activity 提供默认横幅,也可以将其与 <activity> 标记一起使用,为特定 Activity 提供横幅。

横幅应该是 xhdpi 资源,尺寸为 320 x 180 像素。文本必须包含在图片中。如果您的应用支持多种语言,对于带文本的横幅,您必须针对支持的每种语言提供单独的版本。

更改启动器颜色

当 TV 应用启动时,系统会显示动画,就像一个不断膨胀的实心圆。要自定义此动画的颜色,请将 TV 应用或 Activity 的 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>
    

如需详细了解如何使用主题背景和样式,请参阅样式和主题背景

添加 TV 库

Jetpack 包含用于 TV 应用的 androidx 软件包库。这些库为 TV 设备提供了 API 和用户界面微件。

构建 TV 应用

完成上述步骤后,就该开始构建适合大屏幕的应用了!查看以下附加主题可帮助您构建 TV 应用:

  • 构建 TV 播放应用 - TV 为娱乐而生,因此 Android 提供了一套界面工具和微件,用于构建可播放视频和音乐并允许用户浏览所需内容的 TV 应用。
  • 帮助用户在 TV 上找到您的内容 - 让所有内容选择尽在用户掌握之中,帮助他们找到自己喜欢的内容与提供这些内容本身几乎同样重要。此培训介绍如何在 TV 设备上呈现您的内容。
  • 构建 TV 游戏 - TV 设备是很好的游戏平台。如需了解如何打造出色的 TV 游戏体验,请参阅此主题。
  • 构建 TV 频道 - 以线性“广播电视”风格呈现您的视频内容,用户可以通过收视指南以及上一频道/下一频道按钮收看频道和节目。

运行 TV 应用

运行您的应用是开发过程的一个重要环节。您可以在配置为支持 USB 调试的 TV 设备上运行您的应用,也可以使用虚拟 TV 设备运行您的应用。

在真实设备上运行

按照以下步骤设置您的 TV 设备:

  1. 使用 USB 数据线将您的 TV 设备连接到开发计算机。如果需要,请参阅设备制造商提供的文档。
  2. 在您的 TV 设备上,转到设置
  3. 设备行中,选择关于
  4. 向下滚动到版本号并选择版本号数次,直到您看到“您现在已处于开发者模式!”消息。
  5. 返回设置。在偏好设置行中,选择开发者选项
  6. 依次选择调试 > USB 调试,然后选择开启
  7. 返回 TV 主屏幕。

要在 TV 设备上测试您的应用,请执行以下操作:

  1. 在 Android Studio 中,选择您的项目,然后点击工具栏中的 Run 图标
  2. Select Deployment Target 窗口中,选择您的 TV 设备,然后点击 OK

在虚拟设备上运行

Android SDK 中的 AVD Manager 提供了一些设备定义,让您能够创建用于运行和测试应用的虚拟 TV 设备。

要创建虚拟 TV 设备,请执行以下操作:

  1. 启动 AVD Manager。如需了解详情,请参阅 AVD Manager 帮助。
  2. 在 AVD Manager 对话框中,点击 Device Definitions 标签。
  3. 选择其中一个 Android TV 设备定义,然后点击 Create AVD
  4. 选择模拟器选项,然后点击 OK 以创建 AVD。

    注意:为使 TV 模拟器设备达到最佳性能,请使用 x86 模拟器并启用 Use Host GPU 选项。此外,还应使用虚拟设备加速(如果有)。如需详细了解模拟器的硬件加速,请参阅配置硬件加速

要在虚拟 TV 设备上测试您的应用,请执行以下操作:

  1. 在 Android Studio 中,选择您的项目,然后点击工具栏中的 Run 图标
  2. Select Deployment Target 窗口中,选择您的虚拟 TV 设备,然后点击 OK

如需详细了解如何使用模拟器,请参阅使用模拟器。如需详细了解如何从 Android Studio 向虚拟设备部署应用,请参阅使用 Android Studio 进行调试