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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

计算机综合实践报告Word文档格式.docx

1、 11.1功能需求分析1.1.1播放器的基本功能1.1.2功能需求时序分析 21.2系统结构流程图 31.3系统界面需求1.4开发环境 42、音乐播放器详细设计与实现2.1播放器界面设计2.2获取并解析XML文件 62.3下载MP3文件 92.4播放MP3文件 101、系统需求分析1.1功能需求分析根据项目的目标,我们可获得项目系统的基本需求,一下从不同角度来描述系统的需求,并且使用用例图来描述,系统的功能需求,播放器的基本控制需求。以下分别描述:1.1.1播放器的基本功能退出图4-1 播放器基本控制图在播放器运行时,主界面是服务器的歌曲列表,可以点击刷新列表,也可以点击歌曲名,开始下载歌曲,

2、然后点击本地歌曲列表可以显示出本地的歌曲文件,点击文件名则跳转到播放界面,在播放界面可以控制歌曲的播放、暂停、停止以及返回本地歌曲列表。1.1.2功能需求时序分析图4-2 音乐播放器的时序图从以上时序图可以看到播放器中消息发送及调用过程。1.2系统结构流程图图4-3 音乐播放器系统流程图以上显示了播放器的各个流程。1.3系统界面需求播放器界面要求布局合理,简约,颜色舒适,控制按钮友好,能让用户一眼就能看出各个按钮的作用及操作方法。能实现要求的功能,但又不重复。要考虑到不同手机屏幕大小可能不一样,应尽量兼容大多数手机屏幕尺寸,使之显示无障碍。1.4开发环境操作系统:Windows7 x64。开发

3、环境:Eclipse Version: Indigo Service Release 1ADT Version: 16.0.1运行环境:Android 2.22、音乐播放器详细设计与实现2.1播放器界面设计首先是创建一个主界面MainActivity,它使用TabHost布局,这里面的TabWidget控件控制着两个Activity的互相切换:一个是Mp3PlayerListActivity(图5-1),这个Activity是一打开程序就显示的服务器歌曲列表。图5-1 Mp3PlayerListActivity另一个是LocalActivity(图5-2),这个Activity是点击TabWi

4、dget控件中的“本地”按钮才会显示的本地歌曲列表界面。图5-2 LocalActivity在LocalActivity中点击列表中的歌曲名就会调出PlayerActivity(图5-3),这个Activity就是播放音乐时的界面,其中有一些对播放器进行控制的控件。图5-3 PlayerActivity详细设计代码见附录。2.2获取并解析XML文件因为打开播放器首先就要刷新服务器上的歌曲列表,那么我们就得获取服务器上的歌曲列表文件,即XML文件。实现代码如下:/ 根据URL下载文本文件,必须是文本文件,因为返回值是文本中的字符public String download(String urlS

5、tr) StringBuilder sb = new StringBuilder();String line = null;BufferedReader buffer = null;try / 创建一个URL对象URL url = new URL(urlStr);/ 创建一个http连接HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();/ 使用io读取数据buffer = new BufferedReader(new InputStreamReader(urlConn.getInputStream();/

6、一行行的读取数据while (line = buffer.readLine() != null) sb.append(line); catch (Exception e) e.printStackTrace(); finally / 关闭buffer 节约资源buffer.close(); catch (Exception e2) e2.printStackTrace();/将读取到的文本文件中的内容传回去return sb.toString();从服务器上下载到XML中的文本后就要开始解析,在开始解析之前我们先来了解一下服务器上用来保存歌曲信息的XML文件。图5-2 XML文件结构图从上图中

7、可以看出所有的歌曲信息是包含在一个resources标签当中的,而每一个resource标签就代表一首歌曲,其中的id、mp3.name、lrc.name、lrc.size标签都分表代表了歌曲的一条信息。在我所设计的播放器中所用到是实现SAX(Simple API for XML)接口的方式来解析XML文件,解析的实现代码如下:/开始解析XML文件中的每一个标签时调用的方法Overridepublic void startElement(String uri, String localName, String qName,Attributes attr) throws SAXException

8、 /将从XML文件中读取到的标签名赋值给tagNametagName = localName;/如果标签名为resource时 就创建一个mp3Info的实例对象if (tagName.equals(resource) mp3Info = new Mp3Info();/解析完XML文件中的每一个标签时调用的方法public void endElement(String uri, String localName, String qName)throws SAXException /每次读取到resource标签就代表一首歌曲的信息已经完成,并将次mp3Info加到infos当中if (qNam

9、e.equals(infos.add(mp3Info);/每读完一个标签就清空tagName,以免出错tagName = ;/读取XML文件中没一个标签中内容public void characters(char ch, int start, int length)/将读取到的内容赋值给tempString temp = new String(ch, start, length);/将每个标签中的内容赋值给mp3Info实例对象中相应的变量idmp3Info.setId(temp); else if (tagName.equals(mp3.namemp3Info.setMp3Name(temp

10、);mp3.sizemp3Info.setMp3Size(temp);lrc.namemp3Info.setLrcName(temp);lrc.sizemp3Info.setLrcSize(temp);2.3下载MP3文件根据URL的地址从服务器上下载文件,因为下载不可能是一瞬间就能完成的事,如果我们在主线程中进行下载,那么下载过程中程序就会出现假死状态,因为它在等待文件下载完成,下载完成才能执行后面的操作,所以我们需要用一个线程来进行下载任务,实现代码如下:/ 每次用户点击ListActivity当中的一个条目时,就会调用该方法public int onStartCommand(Intent

11、 intent, int flags, int startId) / 从Intent对象当中将Mp3Info对象取出Mp3Info mp3Info = (Mp3Info) intent.getSerializableExtra(mp3Info);/ 生成一个下载线程,并将Mp3Info对象作为参数传递到线程对象当中DownloadThread downloadThread = new DownloadThread(mp3Info);/ 启动新线程Thread thread = new Thread(downloadThread);thread.start();return super.onStartCommand(intent, flags, startId);class DownloadThread implements Runnable

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

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