近年来,Android TV的迅速发展,传统的有线电视受到较大的冲击,在TV上用户同样也可以看到各个有线电视的直播频道,相对于手机,这种直播节目,体验效果更佳,尤其是一样赛事节目,大屏幕看得才够痛快,还可以邀几好友一起欣赏。今天将介绍构建一个TV app的直播节目实例,此实例上传到Github: ​​https://github.com/hejunlin2013/LivePlayback​​ 喜欢可以star。下方"阅读原文"可直接到该实例的github, 本文Agenda如下:

  • 效果图
  • 代码实现:
  • 主页面:Recycleview对应Adapater
  • 直播节目源
  • 播放器
  • 播放页处理
  • 播放页的播放panel:

先看下效果图:

主界面: 

Android TV开发总结(六)构建一个TV app的直播节目实例_Java

Android TV开发总结(六)构建一个TV app的直播节目实例_Java_02

CCTV-1:

Android TV开发总结(六)构建一个TV app的直播节目实例_Java_03

湖南卫视:

Android TV开发总结(六)构建一个TV app的直播节目实例_Java_04

CCTV-第一剧场:

Android TV开发总结(六)构建一个TV app的直播节目实例_Java_05

CCTV-15(音乐):

Android TV开发总结(六)构建一个TV app的直播节目实例_Java_06

CCTV-14(少儿):

Android TV开发总结(六)构建一个TV app的直播节目实例_Java_07

CCTV-13(新闻):

CCTV-12(社会与法):

Android TV开发总结(六)构建一个TV app的直播节目实例_Java_08

CCTV-11(戏曲):

Android TV开发总结(六)构建一个TV app的直播节目实例_Java_09

CCTV-10(科教):

Android TV开发总结(六)构建一个TV app的直播节目实例_Java_10

CCTV-9(纪录):

Android TV开发总结(六)构建一个TV app的直播节目实例_Java_11

CCTV-8(电视剧):

Android TV开发总结(六)构建一个TV app的直播节目实例_Java_12

CCTV-第一剧场:

Android TV开发总结(六)构建一个TV app的直播节目实例_Java_13

CCTV-15:

Android TV开发总结(六)构建一个TV app的直播节目实例_Java_14

代码实现:

  • 主页面:Recycleview对应adapater
  • 直播节目源
  • 播放器
  • 播放页处理

主页面:

Android TV开发总结(六)构建一个TV app的直播节目实例_Java_15

播放页:

Android TV开发总结(六)构建一个TV app的直播节目实例_Java_16


Android TV开发总结(六)构建一个TV app的直播节目实例_Java_17


Android TV开发总结(六)构建一个TV app的直播节目实例_Java_18

播放器是用二次封装的ijkplayer,从主页面传url到播放页面,关才mediaplayer相关,之前专门写了专题分析,mediaplayer的状态可参考《Android Multimedia框架总结(一)MediaPlayer介绍之状态图及生命周期》 
第三方播放器典型特点就是另起一个mediaplayerservice,注意这是另外一个进程,为什么是另一个进程,可参见我的文章:MediaPlayer的C/S模型。对于ijkplayer这个框架,因为做实例,才引入,不做评价,也不会去深究,满足基本播放需求就ok。市场上有很多第三方播放框架,ijkplayer,vitamio,百度云播放等。

再看下播放页的播放panel:

Android TV开发总结(六)构建一个TV app的直播节目实例_Java_19

这里有几个点要注意 

  • 为演示,并未对层级进行使用FrameLayout,及viewstub,include等性能优化相关的,在实际商用项目中,建议写xml文件,尽可能遵循过少的层级,高级标签及FrameLayout等技巧。
  • 所有的size切勿直接写死,用 android:layout_marginTop=”@dimen/dimen_20dp”表示,string值统一写到string.xml中,这些基本的规范,会让你提高不少效率。