前言

如果不想自己去找视频看,以传统方式看电视也不错,比如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的数据了。

packagecom.nmbb.oplayer.ui.helper;

importjava.io.IOException;
importjava.util.ArrayList;

importjavax.xml.parsers.DocumentBuilder;
importjavax.xml.parsers.DocumentBuilderFactory;
importjavax.xml.parsers.ParserConfigurationException;

importorg.w3c.dom.Document;
importorg.w3c.dom.Element;
importorg.w3c.dom.NamedNodeMap;
importorg.w3c.dom.Node;
importorg.w3c.dom.NodeList;
importorg.xml.sax.SAXException;

importandroid.content.Context;

importcom.nmbb.oplayer.po.OnlineVideo;

/** 从XML读取电视台节目 */
public classXmlReaderHelper{

/** 获取所有电视分类 */
public staticArrayList<OnlineVideo>getAllCategory( finalContextcontext){
ArrayList<OnlineVideo>result= newArrayList<OnlineVideo>();
DocumentBuilderFactorydocBuilderFactory= null;
DocumentBuilderdocBuilder= null;
Documentdoc= null;
try{
docBuilderFactory=DocumentBuilderFactory.newInstance();
docBuilder=docBuilderFactory.newDocumentBuilder();
// xmlfile放到assets目录中的
doc=docBuilder.parse(context.getResources().getAssets()
.open("online.xml"));
// rootelement
Elementroot=doc.getDocumentElement();
NodeListnodeList=root.getElementsByTagName("category");
for( inti=0;i<nodeList.getLength();i++){
Nodenode=nodeList.item(i); // category
OnlineVideoov= newOnlineVideo();
NamedNodeMapattr=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);
// ReadNode
}
} catch(IOExceptione){
} catch(SAXExceptione){
} catch(ParserConfigurationExceptione){
} finally{
doc= null;
docBuilder= null;
docBuilderFactory= null;
}
returnresult;
}

/** 读取分类下所有电视地址 */
public staticArrayList<OnlineVideo>getVideos( finalContextcontext,
StringcategoryId){
ArrayList<OnlineVideo>result= newArrayList<OnlineVideo>();
DocumentBuilderFactorydocBuilderFactory= null;
DocumentBuilderdocBuilder= null;
Documentdoc= null;
try{
docBuilderFactory=DocumentBuilderFactory.newInstance();
docBuilder=docBuilderFactory.newDocumentBuilder();
// xmlfile放到assets目录中的
doc=docBuilder.parse(context.getResources().getAssets()
.open("online.xml"));
// rootelement
Elementroot=doc.getElementById(categoryId);
if(root!= null){
NodeListnodeList=root.getChildNodes();
for( inti=0,j=nodeList.getLength();i<j;i++){
NodebaseNode=nodeList.item(i);

if(!"item".equals(baseNode.getNodeName()))
continue;
Stringid=baseNode.getFirstChild().getNodeValue();
if(id== null)
continue;
OnlineVideoov= newOnlineVideo();
ov.id=id;

Elementel=doc.getElementById(ov.id);
if(el!= null){
ov.title=el.getAttribute("title");
ov.icon_url=el.getAttribute("image");
ov.level=3;
ov.category=1;
NodeListnodes=el.getChildNodes();
for( intm=0,n=nodes.getLength();m<n;m++){
Nodenode=nodes.item(m);
if(!"ref".equals(node.getNodeName()))
continue;
Stringhref=node.getAttributes()
.getNamedItem("href").getNodeValue();
if(ov.url== null){
ov.url=href;
} else{
if(ov.backup_url== null)
ov.backup_url= newArrayList<String>();
ov.backup_url.add(href);
}
}
if(ov.url!= null)
result.add(ov);
}
}
}
} catch(IOExceptione){
e.printStackTrace();
} catch(SAXExceptione){
e.printStackTrace();
} catch(ParserConfigurationExceptione){
e.printStackTrace();
} finally{
doc= null;
docBuilder= null;
docBuilderFactory= null;
}
returnresult;
}

}

三、下载

请移步#Taocode(SVN):

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

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

四、Vitamio公告

    正式建立Vitamio开发者联盟QQ群!群号为: 246969281
    注意: 目前仅接受已经开发基于Vitamio产品的开发者申请加入,申请理由请填写产品的名称和链接!

注意更新至2012-07-09发布的新版SDK:这里。

、参考

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

各大电视台直播地址

网络电视直播地址收集


更多相关文章

  1. 万字长文带你了解最常用的开源 Squid 代理服务器
  2. 八款常见的Android游戏引擎
  3. 【Android】安卓AVD无法上网解决方案
  4. 普林斯顿大学屏蔽Android设备
  5. 解决VS2015安装Android(安卓)SDK 后文件不全及更新问题
  6. android错误整理——模拟器无法连接网络
  7. Android应用盈利广告平台的嵌入方法详解
  8. Android邮件发送详解
  9. Android(安卓)快速开发框架 最新总结

随机推荐

  1. android 最简单的圆角阴影效果
  2. eclipse下android工程目录讲解
  3. 用eclipse编写Android程序时怎样生成apk
  4. Android开源项目--工具库篇
  5. Android地图获取详细街道地址信息 精确定
  6. Android(安卓)NDK系列三(Android(安卓)Stu
  7. 打造Android万能上拉下拉刷新框架--XRefr
  8. Android(安卓)event日志打印原理
  9. android httpClient 支持HTTPS的处理方式
  10. android eclipse xml不自动代码提示