栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

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

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

前言

 如果不想自己去找视频看,以传统方式看电视也不错,比如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)——细节优化

正文

 一、目标

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

 

 

 二、主要代码

  电视台的地址目前是存在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;


public class XmlReaderHelper {

  
  public static ArrayList getAllCategory(final Context context) {
    ArrayList result = new ArrayList();
    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 getVideos(final Context context,
      String categoryId) {
    ArrayList result = new ArrayList();
    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();
  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 开发播放在线电视相关资料,后续继续补充。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/162028.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号