ImageVerifierCode 换一换
格式:DOCX , 页数:44 ,大小:627.40KB ,
资源ID:5443908      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5443908.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Android1网络视频播放器.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Android1网络视频播放器.docx

1、Android1网络视频播放器1 网络视频播放器 小安:博士,公司又上新项目了? 大致博士:小安,什么项目这么紧张啊 。 小安:是一个基于Android系统的视频播放客户端 大致博士:这很好啊,可以将你所学的都展示出来呀,很多知识要点都已经传授给你了。 小安:但是,还是没有信心呀!还有很多的问题呀,博士。 大致博士:那好吧!那就给你介绍一个简单的实现网络视频播放器的demo,讲一下它的核心部分。你要用心听啊!1.1 项目概述 基于Android客户端的网络视频播放器,实现了网络(服务器)端视频文件分类列表显示,下载并存储在手机SD卡中,随时进行播放。1.2 项目目的掌握Andorid页面UI设

2、计 掌握SAX解析XML文件 掌握基于android平台多线程、断点下载 掌握视频多媒体播放 1.3 项目实现流程1.3.1 服务器端 服务器说明及搭建方法:第一, 将光盘中xxx下的工程导入Eclipse中,步骤如下。点击【File】【Import】,之后选择【General】下的【Existing Projects into Workspace】,点击【Next】,通过【Browse】定位到该工程的位置。之后点击【Finish】。导入完成。第二, 将该项目发布到Tomcat服务器上。右击该项目名,选择【Run As】【Run on Server】,如下图:之后点击【Finish】,此时,在

3、浏览器中访问“http:/localhost:8080/SharpVideo/”地址,可以得到如下界面。说明服务器已经成功运行。其中,之前六个以“.jsp”结尾的超链接分别对应服务器端程序中的六个Jsp文件,每个Jsp文件可以返回一个XML格式的结果,供手机客户端程序解析。而后面的“picture/”和“video/”两个超链接对应服务器端程序中的两个文件夹,分别存放图片和视频。getSharpCategory.jsp:返回该服务器端所有视频栏目的信息以及该栏目对应的标示图片及访问该类型的所有视频的列表地址。返回结果格式如下: 4 1 经典 http:/localhost:8080/Sharp

4、Video/picture/icon/jingdian.png http:/localhost:8080/SharpVideo/getSharpVideoByCategroyid1.jsp 1 0 getSharpVideo.jsp:返回所有视频信息。返回结果格式如下: 20 315 万山红_红歌_山丹丹开花红艳艳_镜头版 2010-05-03 16:13:03.0 万山红_红歌_山丹丹开花红艳艳_镜头版 sharpandroid http:/localhost:8080/SharpVideo/picture/1jingdian/wanshanhong_hongge_shandandankai

5、huahongyanyan_jingtouban.jpg 10 10 万山红_红歌_山丹丹开花红艳艳_镜头版 10 http:/localhost:8080/SharpVideo/video/1jingdian/wanshanhong_hongge_shandandankaihuahongyanyan_jingtouban.mp3 http:/localhost:8080/SharpVideo/video/1jingdian/wanshanhong_hongge_shandandankaihuahongyanyan_jingtouban.mp3 至于后面四个“.jsp”文件返回的分别是不同栏目

6、的视频信息,格式与getSharpVideo.jsp的结果一致。1.3.2 UI页面设计 主页面 具体代码 补充完整 具体代码为: 频道页面具体代码补充完整 对话框页面 图片和具体代码补充完整 下载页面显示: 具体代码代码为: 已下载列表界面: 播放页面:具体代码代码为 代码为: 1.3.3 XML解析 文件结构:在本应用中从服务器端信息都是以XML形式获得,这里就在所难免的需要使用前面章节讲到的XML解析相关应用。实体类首先需要我们根据需求写出相应的实例类。结合本例,需要解析的有两个实体。1:当用户发出请求需要获得内容列表时,解析视频信息需要的视频对象。2:当用户发出请求需要获得内容分类时,

7、解析分类信息需要的分类对象。com.sharpandroid_video.channel.entity+Video.java+Category.javaHandler类使用SAX解析,在处理不同类型的XML时就需要不同的Handler类,这是SAX解析的特点。com.sharpandroid_video.channel.entity.xml+ChannelHandler.java+VideoHandler.java由于从服务器得到的XML的结构较为简单,在重写Handler时,没必要重写无关的事件,ChannelHandler.java代码如下:package com.sharpandroid

8、_video.channel.entity.xml;import java.util.ArrayList;import org.xml.sax.SAXException;import org.xml.sax.helpers.DefaultHandler;import com.sharpandroid_video.channel.entity.Category;public class ChannelHandler extends DefaultHandler private String content; private Category current=new Category(); pub

9、lic ArrayList channels=new ArrayList(); Override public void characters(char ch, int start, int length) throws SAXException String part=new String(ch,start,length); if(!part.equals(n) if(content!=null) content+=part; else content=part; Override public void endElement(String uri, String localName, St

10、ring name) throws SAXException if(categoryid.equalsIgnoreCase(localName) current.setCategoryid(content); else if(regularIcon.equalsIgnoreCase(localName) current.setRegularIcon(content); else if(AltIcon.equalsIgnoreCase(localName) current.setAltIcon(content); else if(Thumbnail.equalsIgnoreCase(localN

11、ame) . channels.add(current); current=new Category(); content=null; 大家可以看到,本例里只是重写了characters(),endElement()两个事件,就完成了需求。这是值得注意的,在开发过程中并不是所有的Handler事件都要重写的,结合你需要解析的XML特点,编写以最简洁的方式完成自己的应用,才是最佳方式。VideoHandler.java的编写类似,故不再赘述。方法实现:com.sharpandroid_video.helper+ParserXML.java在实体类,Handler类编写完毕,就是整体的实现过程,下

12、面给出获得“推荐内容”XML文件的过程。其他方法类同。public static ArrayList TopVideoList() try VideoHandler handler=new VideoHandler(); String http = http:/192.168.1.188:8080/SharpVideo/getSharpVideo.jsp; InputStream input=new URL(http).openStream(); SAXParser sp = spf.newSAXParser(); XMLReader reader = sp.getXMLReader(); r

13、eader.setContentHandler(handler); InputSource inputSource=new InputSource(input); reader.parse(inputSource); input.close(); return handler.videos; catch (Exception e) e.printStackTrace(); return null; 1.3.4 视频文件下载 下载模块概述为了实现视频的播放,需要将文件从网络下载到本地,将文件存储在手机的SD卡中,之后再随时读取SD卡中的文件,实现文件的播放。在下载中为了提高运行的效率和用户的体验

14、,我们依然采取多线程、断点的方式,在之前的网络一章中已经重点介绍了如何实现多线程、断点下载,下面我们就来进一步完善它。说明:由于此模块是在以前多线程、断点功能上完善,很多代码都是重复的,而且数量是很多的。此节只介绍了关键代码,有些删减的代码需要回顾网络一篇多线程、断点下载。望理解。 实现流程: 在BrowserActivity界面中弹出buildDialog对话框-下载DownLoaderActivity界面 -点击【下载】Button-断点、多线程下载-点击【暂停(删除)】Button-下载暂停(删除)-点击【返回首页】Button-回到首页界面-点击【已下载列表】Button-转到已经文件

15、界面实现思路:1. 在实现断点、多线程的基础上传入一个唯一标识位实现下载的暂停和删除。2. 将已经下载的文件存入到SD卡的同时,新建一个数据库表,存入下载文件的相关信息。3. 点击【已下载列表】按钮通过Intent跳转到已下载目录,并显示已下载文件信息。4. 点击已下载文件的任意信息,跳转到播放的界面,实现本地播放。5. 点击【返回首页】按钮通过Intent跳转到首页。 下载模块的下载文件的下载将采用多线程、断点的方式,相关知识已经在网络一篇有很详细的介绍,这里就不再过多赘余,下面是实现下载的时序图:如有不清楚请回顾网络一章,现在要在此基础上实现下载的暂停和删除操作。 下载模块的暂停首先需要了

16、解下载过程中线程的相互关系:1. 主进程(主线程)开启了一个download线程 。2. download线程又开启了三条用于真正下载的线程。它们在工作的过程中是独立的,并发的执行流,当要暂停下载操作时,需要同时听停止三条真正下载的线程,在线程中已经为我们提供了类似的方法,但是这里我们使用标记位的方式来实现。当点击下载的同时给其绑定一个Map值,其key为每一个下载资源的path,values为每一个下载传入一个Boolean 的值,true 或者 false。当我们点击【下载】时会同时也把这个标记值传过去,在实现下载的DownloadThread类中进行判断,如果传入是true则下载。反之点

17、击【暂停】时,传入是false则暂停。注意: 在暂停时不要单一的去暂停当前下载的线程,因为操作系统是采用的是效率更高的抢占式多任务策略,如果你停了其中的一个,还有两个可以抢占cpu资源继续下载,所以我们根据它的唯一标记url来判断,则可以同时将其停止。 编写DownLoaderActivity.java代码: (完整)package com.sharpandroid_video.download.download.activity;public class DownLoaderActivity extends Activity private static final String TAG = DownLoaderActivity; private EditText pathEditT

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1