您的位置:首页 > 移动开发 > Android开发

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

2015-01-12 15:45 337 查看
前言

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

声明

  欢迎转载,但请保留文章原始出处:)

    博客园:http://www.cnblogs.com

    农民伯伯: http://over140.cnblogs.com

系列

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

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

  3、使用Vitamio打造自己的Android万能播放器(3)——本地播放(主界面、视频列表)
  4、使用Vitamio打造自己的Android万能播放器(4)——本地播放(快捷搜索、数据存储)

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

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

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

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



正文

一、目标

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

二、主要代码

电视台的地址目前是存在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/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐