手机
当前位置:查字典教程网 >编程开发 >安卓软件开发 >Android 使用Vitamio打造自己的万能播放器(9)—— 在线播放 (在线电视)
Android 使用Vitamio打造自己的万能播放器(9)—— 在线播放 (在线电视)
摘要:前言如果不想自己去找视频看,以传统方式看电视也不错,比如CCTV、湖南卫视等。本章从网络收集几百个电视台的地址,采用多级分类方式呈现,极大丰...

前言

如果不想自己去找视频看,以传统方式看电视也不错,比如CCTV、湖南卫视等。本章从网络收集几百个电视台的地址,采用多级分类方式呈现,极大丰富在线播放部分的内容。

系列

1、Android 使用Vitamio打造自己的万能播放器(1)——准备

2、Android 使用Vitamio打造自己的万能播放器(2)—— 手势控制亮度、音量、缩放

3、Android 使用Vitamio打造自己的万能播放器(3)——本地播放(主界面、视频列表)

4、Android 使用Vitamio打造自己的万能播放器(4)——本地播放(快捷搜索、数据存储)

5、Android 使用Vitamio打造自己的万能播放器(5)——在线播放(播放优酷视频)

6、Android 使用Vitamio打造自己的万能播放器(6)——在线播放(播放列表)

7、Android 使用Vitamio打造自己的万能播放器(7)——在线播放(下载视频)

8、Android 使用Vitamio打造自己的万能播放器(8)——细节优化

正文

一、目标

以多级目录分类方式在在线视频栏目下添加电视台。

Android 使用Vitamio打造自己的万能播放器(9)—— 在线播放 (在线电视)1

Android 使用Vitamio打造自己的万能播放器(9)—— 在线播放 (在线电视)2

二、主要代码

电视台的地址目前是存在XML文件里,那么本文代码主要就是解析XML的数据了。

package com.nmbb.oplayer.ui.helper; import java.io.IOException; import java.util.ArrayList; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; import android.content.Context; import com.nmbb.oplayer.po.OnlineVideo; /** 从XML读取电视台节目 */ public class XmlReaderHelper { /** 获取所有电视分类 */ public static ArrayList<OnlineVideo> getAllCategory(final Context context) { ArrayList<OnlineVideo> result = new ArrayList<OnlineVideo>(); DocumentBuilderFactory docBuilderFactory = null; DocumentBuilder docBuilder = null; Document doc = null; try { docBuilderFactory = DocumentBuilderFactory.newInstance(); docBuilder = docBuilderFactory.newDocumentBuilder(); // xml file 放到 assets目录中的 doc = docBuilder.parse(context.getResources().getAssets() .open("online.xml")); // root element Element root = doc.getDocumentElement(); NodeList nodeList = root.getElementsByTagName("category"); for (int i = 0; i < nodeList.getLength(); i++) { Node node = nodeList.item(i);// category OnlineVideo ov = new OnlineVideo(); NamedNodeMap attr = node.getAttributes(); ov.title = attr.getNamedItem("name").getNodeValue(); ov.id = attr.getNamedItem("id").getNodeValue(); ov.category = 1; ov.level = 2; ov.is_category = true; result.add(ov); // Read Node } } catch (IOException e) { } catch (SAXException e) { } catch (ParserConfigurationException e) { } finally { doc = null; docBuilder = null; docBuilderFactory = null; } return result; } /** 读取分类下所有电视地址 */ public static ArrayList<OnlineVideo> getVideos(final Context context, String categoryId) { ArrayList<OnlineVideo> result = new ArrayList<OnlineVideo>(); DocumentBuilderFactory docBuilderFactory = null; DocumentBuilder docBuilder = null; Document doc = null; try { docBuilderFactory = DocumentBuilderFactory.newInstance(); docBuilder = docBuilderFactory.newDocumentBuilder(); // xml file 放到 assets目录中的 doc = docBuilder.parse(context.getResources().getAssets() .open("online.xml")); // root element Element root = doc.getElementById(categoryId); if (root != null) { NodeList nodeList = root.getChildNodes(); for (int i = 0, j = nodeList.getLength(); i < j; i++) { Node baseNode = nodeList.item(i); if (!"item".equals(baseNode.getNodeName())) continue; String id = baseNode.getFirstChild().getNodeValue(); if (id == null) continue; OnlineVideo ov = new OnlineVideo(); ov.id = id; Element el = doc.getElementById(ov.id); if (el != null) { ov.title = el.getAttribute("title"); ov.icon_url = el.getAttribute("image"); ov.level = 3; ov.category = 1; NodeList nodes = el.getChildNodes(); for (int m = 0, n = nodes.getLength(); m < n; m++) { Node node = nodes.item(m); if (!"ref".equals(node.getNodeName())) continue; String href = node.getAttributes() .getNamedItem("href").getNodeValue(); if (ov.url == null) { ov.url = href; } else { if (ov.backup_url == null) ov.backup_url = new ArrayList<String>(); ov.backup_url.add(href); } } if (ov.url != null) result.add(ov); } } } } catch (IOException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (ParserConfigurationException e) { e.printStackTrace(); } finally { doc = null; docBuilder = null; docBuilderFactory = null; } return result; } }

三、下载

请移步#Taocode(SVN):

项目地址:http://code.taobao.org/p/oplayer

SVN地址:http://code.taobao.org/svn/oplayer/

四、参考

Android读写XML(上)——package说明

各大电视台直播地址

网络电视直播地址收集

结束

本文是新入手Macbook Pro上写的第一篇文章,诸多不习惯,仍然在一天内成功丢弃鼠标,离IOS又近一步了:) 系列文章并不强调用某种技术,但尽可能涉及到多种技术,只有充分了解各种技术才能在适当的时候使用合适的技术。先实现后优化,不必一步到位纠结于每个细节。

以上就是对Android Vitamio 开发播放在线电视相关资料,后续继续补充。

【Android 使用Vitamio打造自己的万能播放器(9)—— 在线播放 (在线电视)】相关文章:

2013年 移动App设计13项注意细节总结

Android Studio使用教程图文详解

在Android本地视频播放器开发

Android 开发中怎么使用自定义字体

Android 退出程序的若干方法总结

提升Android ListView性能的几个技巧

Android基础之使用Fragment适应不同屏幕和分辨率

Android中没有插入SD情况下的文件写入和读取方法

android手机音乐播放器实现歌词同步

Android 使用Intent传递数据的实现思路与代码

精品推荐
分类导航