多媒体综合实验报告_第1页
多媒体综合实验报告_第2页
多媒体综合实验报告_第3页
多媒体综合实验报告_第4页
多媒体综合实验报告_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

多媒体技术与应用综合设计报告题目:android音乐播放器班级:1020562学号:36姓名:陈蓝杰成绩:日期:2013年12月13日基于Android的音乐播放器目录1 综合设计的目的和要求…………31.1项目背景……………31.2编写目的……………42 系统需求分析……………………42.1功能需求……………42.1.1控制需求……………………2.1.2清单列表需求………………52.1.3友好性需求…………………2.2系统界面需求………………………62.3系统性能需求………………………63 系统详细设计……………………73.1功能设计……………73.1.1播放界面设计3.1.2播放列表设计………………………3.1.3菜单功能设计3.1.4播放设置设计3.2系统运行环境………………………153.3开发工具……………154 总结………………165 参考文献…………16

《Android音乐播放器》综合设计的目的与要求项目背景当今社会的生活节奏越来越快,人们对手机的要求也越来越高,由于手机市场发展迅速,使得手机操作系统也出现了不同各类,现在的市场上主要有三个手机操作系统,Windowsmobile,symbian,以及谷歌的Android操作系统,其中占有开放源代码优势的Android系统有最大的发展前景。那么能否在手机上拥有自己编写的个性音乐播放器呢?能的,谷歌Android系统就能做到。本文的音乐播放器就是基于谷歌Android手机平台的播放器。随着计算机的广泛运用,手机市场的迅速发展,各种音频视频资源也在网上广为流传,这些资源看似平常,但已经渐渐成为人们生活中必不可少的一部分了。于是各种手机播放器也紧跟着发展起来,但是很多播放器一味追求外观花哨,功能庞大,对用户的手机造成了很多资源浪费,比如CPU,内存等的占用率过高,在用户需要多任务操作时,受到了不小的影响,带来了许多不便,而对于大多数普通用户,许多功能用不上,形同虚设。针对以上各种弊端,选择了开发多语种的音频视频播放器,将各种性能优化,继承播放器的常用功能,满足一般用户(如听歌,看电影)的需求,除了能播放常见格式的语音视频文件,高级功能:还能播放RMVB格式的视频文件。此外,还能支持中文、英文等语言界面。

要研究了各种市场上流行的手机播放器,了解它们各自的插件及编码方式,还有各种播放器播放的特别格式文件,分析各种编码的优缺点以及各种播放器本身存在的缺陷和特点,编写出功能实用,使用方便快捷的播放器。目前已经实现的功能有能播放常见音频文件的功能,如MP3,WAV,等,拥有播放菜单,能选择播放清单,具备一般播放器的功能,如快进,快退,音量调节等。播放模式也比较完善,有单曲,顺序,循环,随机播放等模式。1.2编写目的现今社会生活紧张,而欣赏音乐是其中最好的舒缓压力的方式之一,本项目的目的是开发一个可以播放主流音乐文件格式的播放器,本设计的实现的这主要功能是播放Mp3,Wav多种格式的音乐文件,并且能够控制播放,暂停,停止,上一曲,下一曲,音量调节,视觉外观,播放列表和歌曲文件的管理操作等多种播放控制功能,界面简明,操作简单。本项目是一款基于Android手机平台的音乐播放器,使Android手机拥有个性的多媒体播放器,使手机显得更生动灵活化,与人们更为接近,让手机主人随时随地处于音乐视频的旋律之中。使人们的生活更加多样化。也使设计者更加熟练Android的技术和其它在市场上的特点。2、系统需求分析2.1功能需求2.1.1控制需求图2.1播放器基本控制图2.1.2清单列表需求图2.2播放器清单2.1.3友好性需求图2.3播放器设定2.2系统界面需求播放器界面要求布局合理,颜色舒适,控制按钮友好,为了减少开发工程量,图片素材多数为公司项目素材(图2.4)图2.4播放器界面说明:左下角为清单按钮右下角为程序退出按钮蓝色条为音轨2.3系统性能需求根据Android手机系统要求无响应时间为5秒,所以就有如下性能要求:(1)当要求歌曲播放时,程序响应时间最长不能超过5秒(2)当要求歌曲暂停时,程序响应时间最长不能超过5秒(3)当要求歌曲停止时,程序响应时间最长不能超过5秒(4)当要求歌曲上/下一首时,程序响应时间最长不能超过5秒(5)当要求进行清单列表时,程序响应时间最长不能超过5秒3、系统详细设计3.1功能设计3.1.1播放器主界面设计播放器主界面(图3.1)图3.1Android的每一个可视化界面,都有其的唯一的布局配置文件,该文件里面有各种布局方式,和各种资源文件如图像,文字,颜色的引用,程序在运行时,可以通过代码对各配置文件进行读取。这样就可以形成不同的可视化界面和炫丽的效果。播放器主界面是一个Activity,Android工程在每个activity启动的时候会首先执行Oncreate()方法,如下代码:@Override PublicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.play_rack);}该方法主要执行界面的初始化操作,Activity有个设置布局的方法:Context.setContentView(layoutResID),参数为资源ID,该Id在工程目录res/layout下,主界面布局文件名为play_rack。下面为play_rack.xml布局文件代码结构如下:<?xmlversion="1.0"encoding="utf-8"?><AbsoluteLayout><LinearLayout></LinearLayout><SeekBar></SeekBar><LinearLayout></LinearLayout></AbsoluteLayout>在绝对布局<AbsoluteLayout>下嵌套两种线性布局<LinearLayout>和<SeekBar>,第一个<LinearLayout>实现了标题和歌曲名的显示位置,通过<AbsoluteLayout>布局设置<LinearLayout>绝对坐标来控制标题的位置。每个布局内可以放置多种Widget(窗体部件)例如:<TextView><ImageButton>等。每个Widget内有多种属性,可以设置该Widget的坐标,大小,背景和颜色等参数。在播放界面中,歌词显示为居中,实现方法代码如下:<LinearLayoutandroid:orientation="horizontal"android:gravity="center"android:layout_height="wrap_content" android:layout_width="fill_parent"> <TextViewandroid:layout_height="wrap_content" android:textColor="#8deeee"android:id="@+id/lrcText" android:layout_width="wrap_content"></TextView></LinearLayout>属性:orientation="horizontal":此线性布局的子部件为水平方式布局 Layout_width="fill_content":布局的宽度为填满父布局Layout_height="wrap_content":布局的高度子由窗体的大小决定窗体TextView文本:textColor="8deeee"设置文本显示的颜色RGB为"8deeee"TextSize为默认大小3.1.2播放列表设计播放列表界面(如图3.2)图3.2布局层次关系如下:<?xmlversion="1.0"encoding="utf-8"?><LinearLayout><LinearLayout> <TextView></TextView></LinearLayout> <ListView></ListView><LinearLayout> <ImageButton></ImageButton> </LinearLayout></LinearLayout>在Android里面,有一个视图叫ListView,其特点是一个有BaseAdapter的属性,从下到下,或从左到右的显示方式。系统默认的方式每一行只显示一个TextView,本播放列表实现了自定义的方式,刚ListView的每一行显示一个音乐图片和一个歌曲名字。我们定义一个类MusicAdapter继承了BaseAdapter,然后通过算法对这个适配器进行扩展,扩展成为第一行能显示一张图片和一个歌曲名字。由于BaseAdapter是一个抽象类,我们需要实现里面的抽象方法getView()。该方法返回一个View,即视图。视图可以显示在Activity上,所以就可以看到我们想要的歌曲列表界面。ListView同样有一个监听器newonItemClickListener(){@OverridepublicvoidonItemClick(AdapterView<?>arg0,Viewarg1,intarg2,longarg3){}},我们只要实现这个方法,就可以监听鼠标的点击事件,当鼠标点击到每一行时,可以通过ListView.getItemAtPositon(intposition)得到该行上的信息。这样就可以通过Intent将数据传入到其它的Activity。本程序的思路是当鼠标点击一行,会跳转到另一个Activity里面,这个Activity和歌曲列表类似,也是一个ListView,该界面将在下一节介绍。 歌曲列表是从播放主界面跳转过来的,能跳到该歌曲列表是前提是数据有歌曲列表的存在。因为每次歌曲列表显示时会查询数据库中的歌曲列表。如果不存在刚会提示是空列表,选择到SDCard中添加歌曲(如图3.3)图3.3中间为一个Dialog对话框,具有Acitivty的属性,但是独立于界面的一个视图,该对话框中放置了一个布局文件。Dialog的创建:AlertDialog.Builder,AlertDialogalert=builder.create();alert.show();该Dialog上有两个菜单选项,第一个为“从SD卡”,点击会跳转到SDcard界面中。3.1.3菜单功能设计菜单界面(如图3.4)图3.4在Menu.Xml配置文件中,布局结构如下:<?xmlversion="1.0"encoding="utf-8"?><LinearLayout><LinearLayout><TextView></TextView></LinearLayout> <ListView></ListView><TextView></TextView><LinearLayout> <ImageButton></ImageButton> </LinearLayout></LinearLayout>在程序中的Menu.Java中有List<String>容器,该容器可以存放String类型的字符,如下:List<String>seclect_items=newArrayList<String>();seclect_items.add("播放"); seclect_items.add("详细"); seclect_items.add("新增"); seclect_items.add("移除"); seclect_items.add("全部移除"); seclect_items.add("设置");然后通过ListView.setAdapter();方法将这些参数设置到界面中去,可以看到与界面显示效果相同!该菜单每一行有一张图片和一个菜单选项(如图3.5)图3.5ListAdapter继承一个BaseAdapter,实现里面的getView()方法,再对其进行扩展。ViewgetView(intposition,ViewconvertView,ViewGroupparent){ convertView=inflater.inflate(R.layout.file_row,null);holder.text=(TextView)convertView.findViewById(R.id.text);holder.icon=(ImageView)convertView.findViewById(R.id.image_Icon); convertView.setTag(holder);}ListAdapter每一行都是一个LineaLayout布局,水平放置一个图片一个String。这种算法的实现在前面已经讨论过,这里不再讨论。菜单有6个功能:播放,详细,新增,移除,全部移除,设置。各功能都是通过鼠标点击或触屏触发事件。播放功能:点击后事件触发,传入歌曲名字,让程序操作该名字进行播放。详细功能:点击后事件触发,传入歌曲名字,跳转到下一界面,显示该歌曲的详细信息。新增功能:点击后事件触发,进入到SDCard中,进行歌曲添加选择。移除功能:点击后事件触发。从数据库中删除选中的歌曲。全部移除:点击后事件触发,删除播放列表。设置功能:点击后事件触发,进入到播放设置列表。选择移除菜单选项时,出现的Dialog、选择全部移除菜单选项时,出现的Dialog图3.6图3.7删除单首歌曲算法:是对数据库进行单项操作。通过歌曲名字删歌曲,算法如下:del_One(StringmusicName){ContentResolvercr=getContentResolver();Uriuri=DBProvider.CONTENT_URI; Stringwhere="fileName=?"; String[]selectionArgs={musicName}; cr.delete(uri,where,selectionArgs); }选择“是”后,执行代码:Intentintent=newIntent(Menu.this,PlayListActivity.class); startActivity(intent);声明一个Intent,并指明要跳转的界面类,然后启动Intent。3.1.4播放设置设计图3.8配置文件setting.Xml布局结构如下:<?xmlversion="1.0"encoding="utf-8"?> <LinearLayout> <RadioGroup> <RadioButton></RadioButton> <RadioButton></RadioButton> <RadioButton></RadioButton> </RadioGroup> </LinearLayout><ToggleButton/><AbsoluteLayout> <ImageButton/> <ImageButton/> </AbsoluteLayout>最外层的LinearLayout里面嵌套多层LineaLayout,子LinearLayout里面嵌套着单选按钮RatioGroup和开关按钮ToggleButton。RatioGroup里面嵌套着3个RatioButton,即界面上显示的(单曲循环、随机播放、顺序播放)。用的是一个组件RadioGroup,这个组件有单项选择的功能,里面有RadioButton项,多个RadioButton项只能同时选中一个,该播放器播放模式有单曲循环,随机播放,顺序播放等功能。MediaPlayer有一个监听器,它监听着歌曲是否正在播放或者是否播放完成,当歌曲播放完成时,会触发方法OnCompletionListener(),在该方法里面可以处理歌曲播放完成后的操作。RadioGroup可以进行单项选择操作,如图(5.11)图3.9通过RadioButton.isChe

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论