Android TV APPs 的介绍与创建

最近开始接触到Andorid TV编程,发现目前这方便的资料与比较还比较少,但现在随着产品与用户的升级,涉及到Android TV与 Android Watch的编程离我们越来越近了,本篇博客开始,将以笔记的方式记录我Android TV从零到有的一个过程。

本博客创建步骤主要参考Android官方文档
Get Started with TV Apps

TV应用程序使用相同的结构与手机和平板电脑。这种相似性意味着你也可以修改现有的应用程序运行在TV设备或创建新的应用程序基于你现在已经掌握的Android技术开发应用。

1、创建Android TV工程

本篇博客主要介绍如何准备您的开发环境,为开发电视应用程序,和最低要求的变化,使一个应用程序运行在电视设备上。

首先,我们需要使用以下两个重要的组件:

Activity for Tv(必须) - 在应用的manifest文件中,我们需要声明一个需运行在电视端的activity

Tv Support Libraries(可选) - 有几个相关的支持包,提供了一些电视设备相关的交互控件。

1,1开发环境

Android TV APPs 的介绍与创建_第1张图片

以上是最新官网内容:

  • SDK tools版本在24.0.0及以上
  • Android 5.0(API 21)SDK及以上的
  • 创建或更新你的工程 - 为了能够访问为电视设备设计的API,我们需要创建或修改现有的工程目标SDK版本在Andorid 5.0及以上。

1,2声明一个TV Activity(Set up a TV Project)

运行在电视设备端的Activity需要声明CATEGORY_LEANBACK_LAUNCHER 意图过滤器声明,这样可以保证Google Play能够认定我们的app为电视版,同时,当我们在电视上选择我们的应用图标时,就会进入到我们声明CATEGORY_LEANBACK_LAUNCHER的Activity与Android手机一致。

如下段代码,TvActivity将会展示在电视端,而MainActivity则会显示在手机或平板端。

<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>

注意:

如果我们的app中不包含CATEGORY_LEANBACK_LAUNCHER 意图过滤的Activity,那么电视端的Google Play store不会显示我们的应用,同时,我们用开发工具在电视端或AVD中调试时,我们的应用图标也不会出现在电视桌面上。
如果你正在修改一个现有的应用程序在电视上使用,你的应用程序不应该使用相同的Activity布局电视,它仅仅适用于手机和平板电脑。
TV应用程序的用户界面(或T V部分现有的应用程序)应该提供一个更简单的接口,可以很容易地从沙发上导航使用和远程控制。

1,3声明Leanback支持

如果你的应用要同时运行在手机、平板、以及电视设备上,需要将required属性设置为false,如果设置为true那么应用只能运行在使用Leanback UI的设备上。

以下代码示例展示了如何包含这个清单声明:


    "android.software.leanback"
        android:required="false" />
    ...

1,4声明不可触屏(Declare touchscreen not required)

运行在TV上的应用程序都是不依赖触摸屏输入,也可以理解为不支持触摸屏。为了明确这一点,我们需要声明android.hardware.touchscreen

以下代码示例展示了如何包含这个清单声明:


    "android.hardware.touchscreen"
              android:required="false" />
    ...

提示:
以上代码也是必须要声明的,以此来证明触摸屏功能不是必需的。同时为了让Google Play认定app是电视app,能让应用在电视设备上工作。

1,5提供一个主屏幕图标(Provide a home screen banner)

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

    ...

这里需要强调的是他的优先级大于 android:icon=”@mipmap/ic_launcher”

1,6修改加载图颜色(Change the launcher color)

当我们加载一个app的时候,会显示一个圆形图标的加载动画,我们可以自定义其颜色。
通过android:colorPrimary设置特定颜色,另外还要设置两个额外的属性为true,代码如下:


    

2添加TV支持库(Add TV Support Libraries)

Android SDK下包含了一些用于Tv应用的支持库,这些支持库包含了一些用于Tv应用的UI控件,这些库位于/extras/android/support/ 目录下。以下是对这些库的说明:

  • v17 leanback library -提供了一些专门用于媒体播放控件。
  • v7 recyclerview library-提供了以内存效率更高的方式来管理列表展示的类。同时v17 leanback
    library中的一些类也要依赖此库。
  • v7 cardview library-包含了用来展示信息卡片的控件。

注:你不需要使用这些支持库在你的TV应用程序里。但是,我们强烈建议你使用它们,特别是开发媒体相关的APP。

如果决定要使用v17 leanback library,应当注意,它是依赖v4 support library的,这意味着我们最终要包含如下库:

  • v4 support library
  • v7 recyclerview support library
  • v17 leanback support library

3,创建TV APPs教程(Build TV Apps)

Android TV APPs 的介绍与创建_第2张图片

以上为官方推荐链接

用于娱乐
帮助用户查找电视上的内容
创建电视游戏
创建直播app

4,运行 TV APPs(Run TV Apps)

4.1 创建 TV 模拟器

1、启动AVD管理,创建虚拟机.并点击Create Virtual Device
Android TV APPs 的介绍与创建_第3张图片

2、选择Category Tv,选择一个Android TV,然后点击“Next”
Android TV APPs 的介绍与创建_第4张图片

直至出现如下界面点击“Finish”完成模拟器创建,过程中如果SDK版本过低,会提示下载。
Android TV APPs 的介绍与创建_第5张图片

模拟器中调试

如果你的TV APPs无错误,在模拟器中显示如下。
Android TV APPs 的介绍与创建_第6张图片

通过键盘操作,现实中通过遥控操作。进入Apps界面显示如下:
Android TV APPs 的介绍与创建_第7张图片

看到如上界面,表示你已经成功的创建了一个Android TV项目,可安装到电视中试一试啦!

最后简单说明一下如何在模拟器中操作

为了模拟电视遥控的操作,我们需要通过键盘来控制,键盘中上、下、左、右键,可以移动焦点,点击“Enter”键进入,点击“ESC”键退出。

个人GitHub链接

你可能感兴趣的:(android)