Android VR Player(全景视频播放器) [7]:视频列表的实现-网络视频
前期准备
在之前的博文,Android VR Player(全景视频播放器) [6]:视频列表的实现-本地视频 中, 和大家分享了如何使用AsnycTask来实现读取本地媒体库中的视频信息,并用RecyclerView来实现以列表的方式进行展示。本篇博文以本地视频列表的这篇博文为基础,继续和大家分享如何实现“网络视频列表”。
这里需要说明一下为什么每篇博文的代码都是分开的,而不是一步步迭代,最后得到一个完整的播放器的。因为自己也是刚开始Android开发,水平还很low,还不敢写“跟着我一步步做全景视频播放器”这样的博客。写这个系列的目的也主要是想分享自己在这个全景视频播放器实现过程中遇到的一些问题的解决思路,方法,希望能给正好有这方面需要的同学一点点帮助。每部分单独分开,也可以方便大家“各取所需”。
读取网络视频列表
老朋友:doInBackground
前一篇博客中已近和大家分享过异步任务AsyncTask类的使用方法,我们把读取本地媒体库这个耗时的任务放在了doInBackground方法中。要实现网络列表,就要读取网络视频列表信息,而这个也是一个耗时的任务,也是要放到doInBackground中的。那么我们的网络视频列表信息从何而来,又怎么读取呢?这就涉及到数据传输的格式的选择和Android网络流的相关操作了。
读取JSON数据
在之前的博客 Linux ffmpeg视频截图,C中操作JSON数据 中我分享了如何在C中操作JSON数据,顺便在那篇博客里说了自己对于JSON数据的一些理解,有兴趣的同学可以去看看,这里就不再重复说明JSON的格式等内容,而是直接介绍如何在Android中解析服务器上的JSON数据。
既然谈到服务器,首先我们得有个服务器啊!为了方便,我们直接在本地用MyEclipse创建一个web项目TestOnlineList,然后把准备好的JSON数据和视频缩略图一起放到项目的WebRoot目录下。如果你有远程的服务器的话,也可以将JSON文件和其他一些必要的文件放到web服务器的目录下。
我们准备的视频列表的JSON文件为:
{
"status": 1,
"data": [{
"name": "dubai.mp4",
"videoThumb": "http://10.0.2.2:8080/TestOnlineList/dubai.mp4.jpg",
"duration": "00:01:20.60",
"createTime": "2017-5-9 13:34",
"path": "http://10.0.2.2:8080/TestOnlineList/dubai.mp4"
}, {
"name": "360test.mp4",
"videoThumb": "http://10.0.2.2:8080/TestOnlineList/360test.mp4.jpg",
"duration": "00:00:42.63",
"createTime": "2017-5-9 14:1",
"path": "http://10.0.2.2:8080/TestOnlineList/360test.mp4"
}, {
"name": "panda.mp4",
"videoThumb": "http://10.0.2.2:8080/TestOnlineList/panda.mp4.jpg",
"duration": "00:01:56.82",
"createTime": "2017-5-9 14:1",
"path