Android TV开发简介

0.概述

智能电视近两年可谓发展迅猛,据艾瑞咨询数据显示,2015年国内智能电视终端销售量将达到3556.8万台,预计在2016年用户量突破一亿。不同于手机端群雄割据的局面,Google开发的Android TV系统,凭借其广泛的兼容性,几乎占据了智能电视的全部市场。

简单来看,TV端具有Phone和Pad都不具备的大屏,是移动端的一个大屏扩展。但是,窃以为还不止于此,TV侧的内容,不同于强调私密性的移动侧内容,更加强调多人共享的属性。移动互联网的发展,方便人们生活的同时,也割裂了人与人在现实世界中的交流,我们似乎缺少了一种能在现实生活中互相交流的手段,而用户对TV的使用习惯恰恰可以帮助人们聚在一起。试想一下小时候一家人围坐在电视前吃饭,或者周末酒吧一群狐朋狗友一起看球,这些都是电视才具备的“凝聚力”。而更进一步的Android TV支持种类繁多的输入、输出设备,我们可以做的不仅仅是看电视,这里可深挖、可想象的空间还很大。所以,不少传统的家电厂商,已经将TV端视作未来智能家居、客厅娱乐的核心展示环节,一些主打内容的互联网产品也都抓住风口,相继推出了TV端app。

1.新建一个AndroidTV工程

Android TV工程使用和Android Phone工程相同的文件结构,一样可以使用Android Studio+Gradle的方式进行编辑和构建。(这种相似性意味着你可以轻微修改现有的Phone端app以使其可以在TV端运行。)

当我们需要新建一个TV端工程,或者是修改Phone端的app以使其可以在TV端运行时,需要考虑使用以下组件:

  • Activity for TV (必须的),在你的AndroidMainifest文件中,声明一个在TV端运行的Activity
  • TV Support Libraries(可选的),这个类库为开发人员提供了一些用于TV端的API和UI控件,常用的包括:
    • v17 leanback library 一整套google推荐的TV端界面风格
    • v7 recyclerview library 一个用于管理长列表的具有回收能力的控件
    • v7 cardview library 卡片化风格的UI控件

2.前期准备

在你开始构建你的TV app之前,你需要:

  • 更新你的SDK tools到24.0.0或者更高版本
  • 更新你的SDK到Android 5.0(API 21) 或者更高版本

3.描述一个TV Activity

在AndroidMainifest在声明一个Activity,这与普通的Phone端的Activity的声明并没有什么不同。下面的例子展示了一个基本的AndroidMainifest:

<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,并且它包含CATEGORY_LEANBACK_LAUNCHER这个intent-filter。(需要注意的一点是,如果你的启动Activity不包含这个属性,在Google Play的TV应用商店是无法上架的。)

4.添加Leanback支持库

Leanback风格现在是Google力推的Android TV端的设计风格,大概也是受够了Phone端千奇百怪的应用风格,希望能在TV端走向统一。Google特意给这个属性增加了一个开关,如果你需要在TV端运行才把这个属性设为true,如下所示:

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

5.输入设备

电视的外接设备相当复杂 ,一个重要的特点是运行在TV端的app不再以“触摸”作为主要的输入手段,可选的输入设备包括遥控器,鼠标,手柄,触摸板以及手机。很难确保你依赖的输入信号是一定存在的,简单的“菜单”键,可能有的遥控器都不支持。而遍历市面上的TV外设后,可能可供选择的操作子集就只剩下“上下左右”和“确定”键了。目前主流的TV应用仍将遥控器作为主要的输入设备,QQ音乐的TV端在开发时也使用遥控器作为主要输入设备,但是也遇到了一些问题:有的遥控器没有“菜单”键导致不能唤起播放列表,大量文本输入非常困难等等。另一种解决方案是将操作逻辑放到手机上,通过WIFI或者红外信号的方式,将操作逻辑投放到TV上,Google推出的chromecast就是一种类似的解决方案。

6.TV的界面风格

根据艾瑞咨询的统计数据,75%的TV在40寸以上,绝大多数用户会选择在两米以外观看电视,这就决定了TV的界面设计风格:卡片化与焦点态。就目前来看,国内、外的TV界面风格并不统一,但基本遵循前面提到的两个基本原则。国外TV端的风格以Google力推的Leanback风格为主:

国内更常见的风格(以小米盒子为例):

7.开发与调试工具的选择

  • Android Studio 目前仍然是Android TV端开发的最好工具。
  • 盒子(带USB接口)+显示器

电视的体积大,做实体机调试并不方便,而小巧的盒子比较适合做调试用,通过USB连接电脑,其调试方法和手机完全相同。

  • Android 平板

针对TV开发的应用,是可以在Phone和Pad上运行的,但是手机屏幕太小,Pad可以更方便的调试

  • 更多的输入、输出设备

电视可以外接的IO设备相当多,最好是能包含尽可能多的外接设备,例如带声音输入的遥控器,带触摸板的遥控器,游戏手柄等等。

8.可能遇到的问题

  • 内存不够

就目前的TV端市场来看,TV设备往往具有较强的图象性能(包含多个GPU芯片),但是CPU和内存能力偏弱,需要尤其注意OOM的问题。

  • 切换到后台,进程没有被杀死

这个要看具体情况,用户的预期是什么,一般TV用户还是习惯单任务操作。

  • 连接有线网络的问题

这个问题在Phone上应该没有,但是TV就会存在有线网络的问题,需要留意。相应的,几乎没人在TV上使用2G/3G网络。

原文发布于微信公众号 - QQ音乐技术团队(gh_287053a877e6)

原文发表时间:2016-07-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java后端技术栈

程序员请改掉影响你升职加薪的36个坏习惯!

IT行业的科技公司们一直苦苦追寻传说中以一当十的超级程序员,最新的研究表明确实存在这样一小撮效率奇高的“程序金刚”,但是一位普通程序猿如何能够蜕变成代码金刚呢?

1232
来自专栏云计算D1net

云主机有哪些用途和优势

“云”这个词在“互联网+”时代出现的频率越来越高,云计算也充当了互联网快速发展的助推器。当然,云主机市场也随着火了起来,那么它是凭借什么优势得到了客户的认可呢?...

3586
来自专栏资深Tester

一个致命的bug--自负

2908
来自专栏机器人网

小型无人机飞控系统如何组成和设计?

在经历了早期的遥控飞行后,目前其导航控制方式已经发展为自主飞行和智能飞行。导航方式的改变对飞行控制计算机的精度提出了更高的要求;随着小型无人机执行任务复杂程度的...

4053
来自专栏Java架构

程序员如何通俗易懂的给老婆解释什么是微服务?

程序员有了老婆之后就是累,上次好不容易给她解释了什么是Restful,这不,麻烦又来了…

1962
来自专栏编程一生

架构师之路--谈架构师的基本素养和[干货]日志处理

1773
来自专栏PingCAP的专栏

TiQuery:All Diagnosis in SQL | TiDB Hackathon 优秀项目分享

“距离 Hackathon 结束已经一个多星期了,感觉心情还是没有从激情中平复过来。不过由于我读书少,这时候好像只能感慨一句,黑客马拉松真是太好玩了……”

1343
来自专栏Timhbw博客

WWDC2016简报

2016-06-1407:35:04 发表评论 896℃热度 iOS 10 macOS Sierra WatchOS 3 tvOS 目录 作为一个iO...

29211
来自专栏罗超频道

微软新浏览器命名Edge并发布视频大片,名字不大好视频很华丽

大家还记得微软给WIN10新内置的浏览器Spartan吧?它被中国用户亲切地换做斯巴达,这个名字挺好记的。 这是一款与IE使用完全不同内核的全新一代浏览器,是微...

3626
来自专栏BestSDK

GNU/Linux与开源文化的那些人和事

image.png 一、计算机的发明 世上本无路,走的人多了,就有了路。世上本无计算机,琢磨的人多了……没有计算机,一切无从谈起。 三个人对计算机的发明功不可没...

29210

扫码关注云+社区