使用Vitamio打造自己的Android万能播放器(9)—— 在线播放 (在线电视)
前言
如果不想自己去找視頻看,以傳統方式看電視也不錯,比如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讀取電視臺節目*/
publicclassXmlReaderHelper{
/**獲取所有電視分類*/
publicstaticArrayList<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;
}
/**讀取分類下所有電視地址*/
publicstaticArrayList<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說明
各大電視臺直播地址
網絡電視直播地址收集
結束
本文是新入手Macbook Pro上寫的第一篇文章,諸多不習慣,仍然在一天內成功丟棄鼠標,離IOS又近一步了:) 系列文章并不強調用某種技術,但盡可能涉及到多種技術,只有充分了解各種技術才能在適當的時候使用合適的技術。先實現后優化,不必一步到位糾結于每個細節。
總結
以上是生活随笔為你收集整理的使用Vitamio打造自己的Android万能播放器(9)—— 在线播放 (在线电视)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 服务器用户配置文件在哪里找,管理远程桌面
- 下一篇: 微信无法连接到服务器(110087)),