Android TV APPs 的介绍与创建

标签: android android-TV Android-手表 Android电视 平板电脑
9425人阅读 评论(4) 收藏 举报
分类:

最近开始接触到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”键退出。

个人GitHub链接

查看评论

恶魔和梦魇的私语------- 关于软件开发的务虚主义对话(3)

///////////////////////////////////////////////恶魔吹着笛子来:这封我对myan的回信,详细说明了我对gp,oo,开发工具,软件实现的关系。 另外我对c/...
  • SnowFalcon
  • SnowFalcon
  • 2002-01-09 16:49:00
  • 2159

理解android.intent.category.LAUNCHER 具体作用

android.intent.category.LAUNCHER 具体有什么作用?我做一个小例子希望帮助大家理解                             ...
  • xpp1993
  • xpp1993
  • 2013-06-27 16:56:39
  • 23953

Android TV笔记1

1.必须在manifest 为activity匹配 android.intent.category.LEANBACK_LAUNCHER 过滤器。添加这个主要是为了googleplay的区分识别,没有...
  • SongBaoHeng
  • SongBaoHeng
  • 2015-01-07 10:50:31
  • 4784

Android TV开发(—)开始电视应用

官网:https://developer.android.com/training/tv/start/start.html 确定支持的媒体格式
  • jjwwmlp456
  • jjwwmlp456
  • 2016-08-02 14:25:20
  • 5887

Android TV开发总结(一)构建一个TV app前要知道的事儿

前言:近年来,智能电视的发展如火如荼,Googel 也在大力推进TV及穿带设备的发展,在互联网的风口,是猪也会飞,这句话并不是没有道理的。传统电视机厂商,基本都转型致力于智能电视的相关业务,今天的Ag...
  • hejjunlin
  • hejjunlin
  • 2016-10-12 07:33:05
  • 19263

Android TV 开发简介

[原文](http://www.tuicool.com/articles/IJnQRz)0.概述智能电视近两年可谓发展迅猛,据艾瑞咨询数据显示,2015年国内智能电视终端销售量将达到3556.8万台,...
  • github_30662571
  • github_30662571
  • 2017-06-01 14:00:56
  • 567

Aandroid TV 基于Leanback支持最新MD设计的TV开发框架

原文地址:http://blog.csdn.net/sk719887916 作者:skay 基于6.0最新的API 支持TV的框架 Android 6.0已完美支持TV开发,之前的5.0后Rec...
  • sk719887916
  • sk719887916
  • 2016-04-11 20:52:44
  • 11594

Android TV开发总结(五)TV上屏幕适配总结

前言:前面几篇总结一些TV上的小Sample,开源到GitHub: https://github.com/hejunlin2013/TVSample, 点击链接,可以持续关注。今天总结下TV上屏幕适配...
  • hejjunlin
  • hejjunlin
  • 2016-10-21 18:32:39
  • 11264

Android TV真机测试

android TV真机测试,有两种测试方式,一个是和APP真机测试一样,使用数据线,第二个是打包APK测试;不管是哪种方式,在测试之前,需要在电视上打开开发模式。准备机顶盒号和电视(一般建议在广电局...
  • L_201607
  • L_201607
  • 2017-10-05 08:49:20
  • 519

Android TV机顶盒开发简单介绍

最近接触了点Andiroid 机顶盒开发,简单的写一下,希望我的经验可以给各位带来一点经验。图片我就不上传的,很麻烦的! 首先是Android的apk如何安装到机顶盒上? 1. 将TV连接机...
  • qq_34475058
  • qq_34475058
  • 2016-12-15 14:43:25
  • 5305
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 26万+
    积分: 2694
    排名: 1万+
    博客专栏
    文章分类
    最新评论