收藏 分销(赏)

基于Android平台的音乐播放器设计报告v3.0.doc

上传人:快乐****生活 文档编号:3999171 上传时间:2024-07-24 格式:DOC 页数:13 大小:79.04KB 下载积分:8 金币
下载 相关 举报
基于Android平台的音乐播放器设计报告v3.0.doc_第1页
第1页 / 共13页
基于Android平台的音乐播放器设计报告v3.0.doc_第2页
第2页 / 共13页


点击查看更多>>
资源描述
题目: 基于Android平台的音乐播放器设计报告 学生姓名: 何双双 学 号: 12108010851 指导教师: 邓江沙 目录 第一章 引 言1 1.1 项目背景1 1。2 编写目的1 第二章 系统需求分析2 2。1 功能需求(用例图分析)2 2。1.1 播放器的用例图2 2。1。2用例分析3 第三章 概要设计4 3.1软件播放流程图4 3。2 软件类图5 第四章 详细设计6 4。1MusicInfoController类6 4。1。1。类启动6 4.1。2.服务绑定activity6 4.2MusicInfoController类6 4。2。1获得播放文件列表7 4。3MusicList类7 4.3.1播放7 4.3。2暂停/播放7 4。3.3停止8 4。4MusicPlayerApp类8 4。4.1单例模式8 第五章 系统实现10 5.1软件部署10 5.2启动软件10 5.3播放界面11 第六章 结 论12 附录一: 代码13 1。获取全部音频文件代码13 2。绑定歌曲列表到listview控件13 3。软件初始化14 4。音乐播放服务15 第一章 引 言 1。1 项目背景 当今社会的生活节奏越来越快,人们对手机的要求也越来越高,由于手机市场发展迅速,使得手机操作系统也出现了不同各类,现在的市场上主要有三个手机操作系统,Windows mobile,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。点击播放 转到step3 Step6。点击停止 停止播放音乐 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 = new MediaPlayer();//分配一个播放对象 mMediaPlayer.setOnPreparedListener(mPrepareListener);//绑定之前 mMediaPlayer。setOnCompletionListener(mCompleteListener);//绑定之后 } 4。1。2.服务绑定activity MediaPlayer.OnCompletionListener mCompleteListener = new MediaPlayer。OnCompletionListener() //实例化一个绑定监听器的匿名类 { public void onCompletion(MediaPlayer mp) //完成绑定后 { broadcastEvent(PLAY_COMPLETED);//广播消息 } }; 4.2MusicInfoController类 这个类主要用于获取android系统中的音频文件,并提供访问接口,它是一个单例类。 4.2.1获得播放文件列表 private Cursor query(Uri uri, String[] prjs, String selections, String[] selectArgs, String order){ ContentResolver resolver = pApp。getContentResolver();//取得一个连接对象 if (resolver == null){ return null; } return resolver。query(uri, prjs, selections, selectArgs, order); } public Cursor getAllSongs(){ return query(MediaStore。Audio。Media.EXTERNAL_CONTENT_URI, null, null, null, MediaStore。Audio。Media。DEFAULT_SORT_ORDER);//查询ContentResolver 的所有音频文件 } 4。3MusicList类 改类继承于ListActivity,主要用于显示歌曲列表,并且封装部分操作,以及与父级目标通信。 4。3.1播放 protected void onListItemClick(ListView l, View v, int position, long id) { //歌曲列表的某项被点击 super.onListItemClick(l, v, position, id); if (mCursor == null ||mCursor。getCount() == 0) { return; } mCursor。moveToPosition(position);//游标移动到当前路径 String url = mCursor。getString(mCursor 。getColumnIndexOrThrow(MediaStore。Audio。Media。DATA));//取得绝对路径 mMusicPlayerService。setDataSource(url);//传递绝对路径 mMusicPlayerService.start();//播放音乐 } 4。3.2暂停/播放 mPlayPauseButton。setOnClickListener(new Button。OnClickListener() { public void onClick(View v) { if (mMusicPlayerService != null && mMusicPlayerService.isPlaying()) { mMusicPlayerService.pause();//音乐播放的服务暂停 mPlayPauseButton。setText(R。string.play);//改变按钮文字 } else if (mMusicPlayerService != null){ mMusicPlayerService。start();//如果已经是暂停,则播放音乐 mPlayPauseButton。setText(R。string。pause);//改变文字 } } }); 4。3.3停止 mStopButton。setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { // Perform action on click if (mMusicPlayerService != null ) { mTextView。setVisibility(View.VISIBLE);//改变文字状态 mPlayPauseButton.setVisibility(View。INVISIBLE);//隐藏按钮 mStopButton。setVisibility(View.INVISIBLE);//隐藏停止按钮 mMusicPlayerService。stop();//后台音乐停止播放 } } }); 4。4MusicPlayerApp类 该类继承与Application,是程序的生存类.可以标识音乐播放器的生命周期,包括音乐在后台播放等. 4.4。1单例模式 public void onCreate() { super。onCreate(); mMusicInfoController = MusicInfoController。getInstance(this); //返回该类的一个唯一实例 } public MusicInfoController getMusicInfoController() { return mMusicInfoController; } 第五章 系统实现 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语言的支持,Android Development Tool的插件,和Android SDK2。1版本的全面结合,才使整个音乐播放器系统得以实现。 附录一:代码 1获取全部音频文件代码 private Cursor query(Uri uri, String[] prjs, String selections, String[] selectArgs, String order){ ContentResolver resolver = pApp.getContentResolver();//取得papp的一个resolver实例 if (resolver == null){ returnnull; } return resolver.query(uri, prjs, selections, selectArgs, order); } public Cursor getAllSongs(){ //取得所有音频文件 return query(MediaStore。Audio。Media.EXTERNAL_CONTENT_URI, null, null, null, MediaStore。Audio.Media.DEFAULT_SORT_ORDER); } 2绑定歌曲列表到listview控件 publicvoid bindView(View view, Context context, Cursor cursor) { super.bindView(view, context, cursor); TextView titleView = (TextView) view.findViewById(android。R.id。text1);TextView artistView = (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); MusicPlayerApp musicPlayerApp=(MusicPlayerApp)getApplication();//取得一个实例 mMusicInfoController = (musicPlayerApp)。getMusicInfoController(); startService(new Intent(this,MusicPlayerService.class)); //启动服务 bindService(new Intent(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(new Button。OnClickListener() {//播放和暂停按钮的事件绑定 publicvoid onClick(View v) { if (mMusicPlayerService != null && mMusicPlayerService.isPlaying()) { mMusicPlayerService。pause();//暂停播放 mPlayPauseButton。setText(R。string。play);//改变控件文字 } elseif (mMusicPlayerService != null){ mMusicPlayerService.start();//服务没启动则启动 mPlayPauseButton.setText(R.string。pause);//改变控件文字为暂停 } } }); mStopButton。setOnClickListener(new Button。OnClickListener() {//停止按钮的事件绑定 publicvoid onClick(View v) { if (mMusicPlayerService != null ) { mTextView.setVisibility(View。VISIBLE); mPlayPauseButton.setVisibility(View。INVISIBLE);//改变播放按钮为不可见 mStopButton.setVisibility(View.INVISIBLE); mMusicPlayerService.stop();//停止播放 } } }); IntentFilter filter = new IntentFilter(); filter。addAction(MusicPlayerService。PLAYER_PREPARE_END);// filter.addAction(MusicPlayerService。PLAY_COMPLETED); registerReceiver(mPlayerEvtReceiver, filter);//放入后台 4。音乐播放服务 MediaPlayer.OnCompletionListenermCompleteListener = new MediaPlayer。OnCompletionListener() //实例化化一个listener匿名类 { publicvoid onCompletion(MediaPlayer mp) //完成绑定时调用 { broadcastEvent(PLAY_COMPLETED);//广播消息 } }; MediaPlayer。OnPreparedListener mPrepareListener = new MediaPlayer.OnPreparedListener() //绑定钱调用 { publicvoid onPrepared(MediaPlayer mp) { broadcastEvent(PLAYER_PREPARE_END);//广播事件 } }; privatevoid broadcastEvent(String what) { Intent i = new Intent(what); sendBroadcast(i);//广播消息 } publicvoid onCreate() { super。onCreate(); mMediaPlayer = new MediaPlayer();//实例化一个播放类 mMediaPlayer。setOnPreparedListener(mPrepareListener);//执行绑定前系列动作 mMediaPlayer。setOnCompletionListener(mCompleteListener);//执行绑定后系列动作 } publicclass LocalBinder extends Binder { public MusicPlayerService getService() { return MusicPlayerService.this; } } public IBinder onBind(Intent intent)//绑定 { returnmBinder; } publicvoid setDataSource(String path)//取得播放文件的绝对路径 { try { mMediaPlayer。reset(); mMediaPlayer。setDataSource(path); mMediaPlayer。prepare(); } catch (IOException e) { return; } catch (IllegalArgumentException e) { return; } } publicvoid start()//开始播放 { mMediaPlayer。start(); } publicvoid stop()//停止播放 { mMediaPlayer。stop(); } publicvoid pause()//暂停播放 { mMediaPlayer。pause(); } publicboolean isPlaying()//判断是否在播放 { returnmMediaPlayer。isPlaying(); } publicint getDuration()//取得音乐的时间 { returnmMediaPlayer.getDuration(); } publicint getPosition()//取得正在播放的时间 { returnmMediaPlayer。getCurrentPosition(); } publiclong seek(long whereto)//调到想要播放的时间 { mMediaPlayer.seekTo((int) whereto); return whereto; }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服