基于Android平台的音乐播放器设计报告v3_第1页
基于Android平台的音乐播放器设计报告v3_第2页
基于Android平台的音乐播放器设计报告v3_第3页
基于Android平台的音乐播放器设计报告v3_第4页
基于Android平台的音乐播放器设计报告v3_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

-.--可修编-题目:基于Android平台的音乐播放器设计报告学生:何双双学号:指导教师:邓江沙目录TOC\o"1-3"\h\u17132第一章引言176241.1项目背景174631.2编写目的111487第二章系统需求分析2233372.1功能需求(用例图分析)2253842.1.1播放器的用例图2207412.1.2用例分析331379第三章概要设计4221263.1软件播放流程图4254703.2软件类图57128第四章详细设计6204394.1MusicInfoController类6270404.1.1.类启动6215454.1.2.服务绑定activity685354.2MusicInfoController类6138574.2.1获得播放文件列表7232184.3MusicList类7318394.3.1播放1714.3.2暂停/播放7126724.3.3停止8145374.4MusicPlayerApp类873644.4.1单例模式828091第五章系统实现1012315.1软件部署10244785.2启动软件10300125.3播放界面1128588第六章结论121582附录一:代码13189801.获取全部音频文件代码13238062.绑定歌曲列表到listview控件13267923.软件初始化1460674.音乐播放服务15第一章引言1.1项目背景当今社会的生活节奏越来越快,人们对手机的要求也越来越高,由于手机市场发展迅速,使得手机操作系统也出现了不同各类,现在的市场上主要有三个手机操作系统,Windowsmobile,symbian,以及谷歌的Android操作系统,其中占有开放源代码优势的Android系统有最大的发展前景。那么能否在手机上拥有自己编写的个性音乐播放器呢?能的,谷歌Android系统就能做到。本文的音乐播放器就是基于谷歌Android手机平台的播放器。Android:是谷歌于2007年公布的开放式源代码手机系统,它的开放性就优于其它封闭式的手机系统,因此,任何人都可能根据自己的喜好将手机系统中的所有功能重新编写。这使得越来越多的人关注这个操作系统。本次作品音乐播放器就是基于Android平台的。1.2编写目的现今社会生活紧,而欣赏音乐是其中最好的舒缓压力的方式之一,本项目的目的是开发一个可以播放主流音乐文件格式的播放器,本设计实现的主要功能是播放Mp3,Wav多种格式的音乐文件,并且能够控制播放,暂停,停止,播放列等基本播放控制功能,界面简明,操作简单。本项目是一款基于Android手机平台的音乐播放器,使Android手机拥有个性的多媒体播放器,使手机显得更生动灵活化,与人们更为接近,让手机主人随时随地处于音乐视频的旋律之中。使人们的生活更加多样化。也使设计者更加熟练Android的技术和其它在市场上的特点。第二章系统需求分析2.1功能需求(用例图分析)根据项目的目标,我们可获得项目系统的基本需求,以下从不同角度来描述系统的需求,并且使用用例图来描述,系统的功能需求,我们分成四部分来概括,即播放器的基本控制需要,播放列表管理需求,播放器友好性需求和播放器扩展卡需求。以下分别描述:2.1.1播放器的用例图假设安装了音乐播放器的用户是系统的主要设计对象,其拥有以下操作,启动软件、播放音乐、暂停播放、停止播放、退出软件,其用例图如下图2.1播放器基本用例图2.1.2用例分析用例名称:启动软件参与者:用户目标:使得用户启动软件并加载手机和sd卡上的音频文件到播放列表前置条件:无基本事件流:1.用户启动软件2.播放器将播放列表中的当前的歌曲用例名称:播放参与者:用户目标:使得用户可以播放在播放列表中选中的歌曲前置条件:播放器正在运行基本事件流:1.用户单击“播放”按钮2.播放器将播放列表中的当前的歌曲用例名称:暂停参与者:用户目标:使得用户可以暂停正在播放的歌曲前置条件:歌曲正在播放且未停止和暂停基本事件流:1.用户单击“暂停”按钮2.播放器将暂停当前的歌曲用例名称:停止参与者:用户目标:使得用户可以停止正在播放的歌曲前置条件:歌曲正在播放或暂停基本事件流:1.用户单击“停止”按钮2.播放器将停止当前播放的歌曲用例名称:推出参与者:用户目标:使得用户退出或者后台播放音乐前置条件:程序在运行基本事件流:1.用户按返回键2.播放器退出或者进入后台播放第三章概要设计3.1软件播放流程图Step1.启动软件后,软件自动检索手机和sd卡的音频文件,并组织显示成列表.Step2.点击列表的歌曲名字。Step3.播放音乐。Step4.点击暂停,音乐暂停Step5.点击播放转到step3Step6.点击停止停止播放音乐Step7.点击退出,若音乐处于播放状态,则音乐转向后台播放,界面退出。Step8.点击退户,若音乐处于暂停或者停止状态,直接退出。图3.1音乐播放器流程图3.2软件类图系统设计了4个类,分别是播放音乐的服务类MusicPlayerService;主要用于获取android系统中的音频文件,并提供访问接口的MusicInfoController类;继承于ListActivity,主要用于显示歌曲列表的MusicList类和程序的生存类MusicPlayerApp类。音乐播放器音乐播放器类MusicInfoController类MusicList类MusicPlayerApp类MusicPlayerService图3.2软件类图图3.2音乐播放器类图第四章详细设计4.1MusicInfoController类这个类继承于service,是播放音乐的服务类。播放音乐,暂停音乐,停止播放等操作都封装在这个类中。主要的执行动作有:4.1.1.类启动onCreate(){mMediaPlayer=newMediaPlayer();//分配一个播放对象 mMediaPlayer.setOnPreparedListener(mPrepareListener);//绑定之前 mMediaPlayer.setOnpletionListener(mpleteListener);//绑定之后}4.1.2.服务绑定activityMediaPlayer.OnpletionListenermpleteListener=newMediaPlayer.OnpletionListener()//实例化一个绑定监听器的匿名类{publicvoidonpletion(MediaPlayermp)//完成绑定后{broadcastEvent(PLAY_PLETED);//广播消息}};4.2MusicInfoController类这个类主要用于获取android系统中的音频文件,并提供访问接口,它是一个单例类。4.2.1获得播放文件列表privateCursorquery(Uriuri,String[]prjs,Stringselections,String[]selectArgs,Stringorder){ContentResolverresolver=pApp.getContentResolver();//取得一个连接对象 if(resolver==null){ returnnull; } returnresolver.query(uri,prjs,selections,selectArgs,order); }publicCursorgetAllSongs(){ returnquery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,null,null,null,MediaStore.Audio.Media.DEFAULT_SORT_ORDER);//查询ContentResolver的所有音频文件 }4.3MusicList类改类继承于ListActivity,主要用于显示歌曲列表,并且封装部分操作,以及与父级目标通信。4.3.1播放protectedvoidonListItemClick(ListViewl,Viewv,intposition,longid){//歌曲列表的某项被点击super.onListItemClick(l,v,position,id);if(mCursor==null||mCursor.getCount()==0){return;}mCursor.moveToPosition(position);//游标移动到当前路径Stringurl=mCursor.getString(mCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA));//取得绝对路径mMusicPlayerService.setDataSource(url);//传递绝对路径mMusicPlayerService.start();//播放音乐}4.3.2暂停/播放mPlayPauseButton.setOnClickListener(newButton.OnClickListener(){publicvoidonClick(Viewv){if(mMusicPlayerService!=null&&mMusicPlayerService.isPlaying()){mMusicPlayerService.pause();//音乐播放的服务暂停mPlayPauseButton.setText(R.string.play);//改变按钮文字}elseif(mMusicPlayerService!=null){mMusicPlayerService.start();//如果已经是暂停,则播放音乐mPlayPauseButton.setText(R.string.pause);//改变文字}}});4.3.3停止mStopButton.setOnClickListener(newButton.OnClickListener(){publicvoidonClick(Viewv){//Performactiononclickif(mMusicPlayerService!=null){mTextView.setVisibility(View.VISIBLE);//改变文字状态mPlayPauseButton.setVisibility(View.INVISIBLE);//隐藏按钮mStopButton.setVisibility(View.INVISIBLE);//隐藏停止按钮mMusicPlayerService.stop();//后台音乐停止播放}}});4.4MusicPlayerApp类该类继承与Application,是程序的生存类。可以标识音乐播放器的生命周期,包括音乐在后台播放等。4.4.1单例模式publicvoidonCreate() { super.onCreate(); mMusicInfoController=MusicInfoController.getInstance(this);//返回该类的一个唯一实例 } publicMusicInfoControllergetMusicInfoController() { returnmMusicInfoController; }系统实现5.1软件部署系统编译生成apk文件,将apk文件拷到手机或者sd卡中,直接打开即可安装,或者安装360手机助手通过usb调试的方式进行安装。图5.1软件图标5.2启动软件启动软件后,加载歌曲列表现在这个界面上,如01表示歌曲名,unknown表示歌曲的演唱者图5.2软件启动界面5.3播放界面从加载的歌曲列表中点击要播放的歌曲,开始播放图5.3音乐播放界面第六章结论(1)通过对Android手机平台的音乐播放器软件的开发,使我对Android音乐播放器系统的整体设计有一个深入的了解,对整个流程也会有一个清晰的认识。开发Android音乐播放器,要抓住开发的核心部分,音乐播放器大体由播放主界面、播放列表、菜单、播放设置、文件浏览、歌曲搜索六大核心组成。(3)本次程序设计,对播放器的系统结构框架做了精心的构思与设计,采用主要开发工具是Eclips4.0+Java语言的支持,AndroidDevelopmentTool的插件,和AndroidSDK2.1版本的全面结合,才使整个音乐播放器系统得以实现。附录一:代码1获取全部音频文件代码privateCursorquery(Uriuri,String[]prjs,Stringselections,String[]selectArgs,Stringorder){ ContentResolverresolver=pApp.getContentResolver();//取得papp的一个resolver实例if(resolver==null){returnnull; }returnresolver.query(uri,prjs,selections,selectArgs,order); }publicCursorgetAllSongs(){//取得所有音频文件returnquery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,null,null,null,MediaStore.Audio.Media.DEFAULT_SORT_ORDER); }2绑定歌曲列表到listview控件publicvoidbindView(Viewview,Contextcontext,Cursorcursor){ super.bindView(view,context,cursor); TextViewtitleView=(TextView)view.findViewById(android.R.id.text1); TextViewartistView=(TextView)view.findViewById(android.R.id.text2); titleView.setText(cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE)));//绑定歌曲名 artistView.setText(cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST)));//绑定演唱者 }3软件初始化setContentView(R.layout.list_layout);MusicPlayerAppmusicPlayerApp=(MusicPlayerApp)getApplication();//取得一个实例mMusicInfoController=(musicPlayerApp).getMusicInfoController();startService(newIntent(this,MusicPlayerService.class));//启动服务bindService(newIntent(this,MusicPlayerService.class),mPlaybackConnection,Context.BIND_AUTO_CREATE);//绑定服务mTextView=(TextView)findViewById(R.id.show_text);//取得显示文本控件mPlayPauseButton=(Button)findViewById(R.id.play_pause_btn);//取得开始和暂停控件mStopButton=(Button)findViewById(R.id.stop_btn);//取得停止控件mPlayPauseButton.setOnClickListener(newButton.OnClickListener(){//播放和暂停按钮的事件绑定publicvoidonClick(Viewv){if(mMusicPlayerService!=null&&mMusicPlayerService.isPlaying()){mMusicPlayerService.pause();//暂停播放mPlayPauseButton.setText(R.string.play);//改变控件文字}elseif(mMusicPlayerService!=null){mMusicPlayerService.start();//服务没启动则启动mPlayPauseButton.setText(R.string.pause);//改变控件文字为暂停}}});mStopButton.setOnClickListener(newButton.OnClickListener(){//停止按钮的事件绑定publicvoidonClick(Viewv){if(mMusicPlayerService!=null){mTextView.setVisibility(View.VISIBLE);mPlayPauseButton.setVisibility(View.INVISIBLE);//改变播放按钮为不可见mStopButton.setVisibility(View.INVISIBLE);mMusicPlayerService.stop();//停止播放}}});IntentFilterfilter=newIntentFilter();filter.addAction(MusicPlayerService.PLAYER_PREPARE_END);//filter.addAction(MusicPlayerService.PLAY_PLETED);registerReceiver(mPlayerEvtReceiver,filter);//放入后台4.音乐播放服务MediaPlayer.OnpletionListenermpleteListener=newMediaPlayer.OnpletionListener()//实例化化一个listener匿名类{publicvoidonpletion(MediaPlayermp)//完成绑定时调用{broadcastEvent(PLAY_PLETED);//广播消息}};MediaPlayer.OnPreparedListenermPrepareListener=newMediaPlayer.OnPreparedListener()//绑定钱调用{publicvoidonPrepared(MediaPlayermp){broadcastEvent(PLAYER_PREPARE_END);//广播事件}};privatevoidbroadcastEvent(Stringwhat) { Intenti=newIntent(what); sendBroadcast(i);//广播消息 }publicvoidonCreate() {super.onCreate();

温馨提示

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

评论

0/150

提交评论