近年来,Android TV的迅速发展,传统的有线电视受到较大的冲击,在TV上用户同样也可以看到各个有线电视的直播频道,相对于手机,这种直播节目,体验效果更佳,尤其是一样赛事节目,大屏幕看得才够痛快,还可以邀几好友一起欣赏。今天将介绍构建一个TV app的直播节目实例,此实例上传到Github: https://github.com/hejunlin2013/LivePlayback 喜欢可以star。下方"阅读原文"可直接到该实例的github, 本文Agenda如下:
- 效果图
- 代码实现:
- 主页面:Recycleview对应Adapater
- 直播节目源
- 播放器
- 播放页处理
- 播放页的播放panel:
先看下效果图:
主界面:
CCTV-1:
湖南卫视:
CCTV-第一剧场:
CCTV-15(音乐):
CCTV-14(少儿):
CCTV-13(新闻):
CCTV-12(社会与法):
CCTV-11(戏曲):
CCTV-10(科教):
CCTV-9(纪录):
CCTV-8(电视剧):
CCTV-第一剧场:
CCTV-15:
代码实现:
- 主页面:Recycleview对应adapater
- 直播节目源
- 播放器
- 播放页处理
主页面:
播放页:
播放器是用二次封装的ijkplayer,从主页面传url到播放页面,关才mediaplayer相关,之前专门写了专题分析,mediaplayer的状态可参考《Android Multimedia框架总结(一)MediaPlayer介绍之状态图及生命周期》
第三方播放器典型特点就是另起一个mediaplayerservice,注意这是另外一个进程,为什么是另一个进程,可参见我的文章:MediaPlayer的C/S模型。对于ijkplayer这个框架,因为做实例,才引入,不做评价,也不会去深究,满足基本播放需求就ok。市场上有很多第三方播放框架,ijkplayer,vitamio,百度云播放等。
再看下播放页的播放panel:
这里有几个点要注意 :
- 为演示,并未对层级进行使用FrameLayout,及viewstub,include等性能优化相关的,在实际商用项目中,建议写xml文件,尽可能遵循过少的层级,高级标签及FrameLayout等技巧。
- 所有的size切勿直接写死,用 android:layout_marginTop=”@dimen/dimen_20dp”表示,string值统一写到string.xml中,这些基本的规范,会让你提高不少效率。