使用Vitamio打造自己的Android万能播放器(9)—— 在线播放 (在线电视)
16lz
2021-01-25
前言
如果不想自己去找视频看,以传统方式看电视也不错,比如CCTV、湖南卫视等。本章从网络收集几百个电视台的地址,采用多级分类方式呈现,极大丰富在线播放部分的内容。声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnblogs.com 农民伯伯: http://over140.cnblogs.com
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说明
各大电视台直播地址
网络电视直播地址收集
更多相关文章
- 万字长文带你了解最常用的开源 Squid 代理服务器
- 八款常见的Android游戏引擎
- 【Android】安卓AVD无法上网解决方案
- 普林斯顿大学屏蔽Android设备
- 解决VS2015安装Android(安卓)SDK 后文件不全及更新问题
- android错误整理——模拟器无法连接网络
- Android应用盈利广告平台的嵌入方法详解
- Android邮件发送详解
- Android(安卓)快速开发框架 最新总结