前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android TV开发简介

Android TV开发简介

作者头像
QQ音乐技术团队
发布2018-01-31 17:31:48
2.6K0
发布2018-01-31 17:31:48
举报

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:

代码语言:javascript
复制
<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,如下所示:

代码语言:javascript
复制
<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网络。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-07-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 QQ音乐技术团队 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档