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开发环境
以上是最新官网内容:
- 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的设备上。
以下代码示例展示了如何包含这个清单声明:
<manifest>
<uses-feature android:name="android.software.leanback"
android:required="false" />
...
</manifest>
1,4声明不可触屏(Declare touchscreen not required)
运行在TV上的应用程序都是不依赖触摸屏输入,也可以理解为不支持触摸屏。为了明确这一点,我们需要声明android.hardware.touchscreen。
以下代码示例展示了如何包含这个清单声明:
<manifest>
<uses-feature android:name="android.hardware.touchscreen"
android:required="false" />
...
</manifest>
提示:
以上代码也是必须要声明的,以此来证明触摸屏功能不是必需的。同时为了让Google Play认定app是电视app,能让应用在电视设备上工作。
1,5提供一个主屏幕图标(Provide a home screen banner)
<application
...
android:banner="@drawable/banner" >
...
</application>
这里需要强调的是他的优先级大于 android:icon=”@mipmap/ic_launcher”
1,6修改加载图颜色(Change the launcher color)
当我们加载一个app的时候,会显示一个圆形图标的加载动画,我们可以自定义其颜色。
通过android:colorPrimary设置特定颜色,另外还要设置两个额外的属性为true,代码如下:
<resources>
<style ... >
<item name="android:colorPrimary">@color/primary</item>
<item name="android:windowAllowReturnTransitionOverlap">true</item>
<item name="android:windowAllowEnterTransitionOverlap">true</item>
</style>
</resources>
2添加TV支持库(Add TV Support Libraries)
Android SDK下包含了一些用于Tv应用的支持库,这些支持库包含了一些用于Tv应用的UI控件,这些库位于<sdk>/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)
以上为官方推荐链接
用于娱乐
帮助用户查找电视上的内容
创建电视游戏
创建直播app
4,运行 TV APPs(Run TV Apps)
4.1 创建 TV 模拟器
1、启动AVD管理,创建虚拟机.并点击Create Virtual Device
2、选择Category Tv,选择一个Android TV,然后点击“Next”
直至出现如下界面点击“Finish”完成模拟器创建,过程中如果SDK版本过低,会提示下载。
模拟器中调试
如果你的TV APPs无错误,在模拟器中显示如下。
通过键盘操作,现实中通过遥控操作。进入Apps界面显示如下:
看到如上界面,表示你已经成功的创建了一个Android TV项目,可安装到电视中试一试啦!
最后简单说明一下如何在模拟器中操作
为了模拟电视遥控的操作,我们需要通过键盘来控制,键盘中上、下、左、右键,可以移动焦点,点击“Enter”键进入,点击“ESC”键退出。