收藏 分享(赏)

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

上传人:weiwoduzun 文档编号:3630785 上传时间:2018-11-14 格式:DOC 页数:19 大小:459.36KB
下载 相关 举报
基于Android平台的音乐播放器设计报告v3.0.doc_第1页
第1页 / 共19页
基于Android平台的音乐播放器设计报告v3.0.doc_第2页
第2页 / 共19页
基于Android平台的音乐播放器设计报告v3.0.doc_第3页
第3页 / 共19页
基于Android平台的音乐播放器设计报告v3.0.doc_第4页
第4页 / 共19页
基于Android平台的音乐播放器设计报告v3.0.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

1、题目: 基于 Android 平台的音乐播放器设计报告 学生姓名: 何双双 学 号: 12108010851 指导教师: 邓江沙目录第一章 引 言 -11.1 项目背景 -11.2 编写目的 -1第二章 系统需求分析 -22.1 功能需求(用例图分析) -22.1.1 播放器的用例图 -22.1.2 用例分析 -3第三章 概要设计 -43.1 软件播放流程图 -43.2 软件类图 -5第四章 详细设计 -64.1MusicInfoController 类 -64.1.1.类启动 -64.1.2.服务绑定 activity -64.2MusicInfoController 类 -64.2.1 获

2、得播放文件列表 -74.3MusicList 类 -74.3.1 播放 -74.3.2 暂停/播放 -74.3.3 停止 -84.4MusicPlayerApp 类 -84.4.1 单例模式 -8第五章 系统实现 -105.1 软件部署 -105.2 启动软件 -105.3 播放界面 -11第六章 结 论 -12附录一: 代码 -131.获取全部音频文件代码 -132.绑定歌曲列表到 listview 控件 -133.软件初始化 -144.音乐播放服务 -15第一章 引 言1.1 项目背景当今社会的生活节奏越来越快,人们对手机的要求也越来越高,由于手机市场发展迅速,使得手机操作系统也出现了不同

3、各类,现在的市场上主要有三个手机操作系统,Windows mobile,symbian,以及谷歌的 Android 操作系统,其中占有开放源代码优势的 Android 系统有最大的发展前景。那么能否在手机上拥有自己编写的个性音乐播放器呢?能的,谷歌 Android 系统就能做到。本文的音乐播放器就是基于谷歌 Android 手机平台的播放器。Android:是谷歌于 2007 年公布的开放式源代码手机系统,它的开放性就优于其它封闭式的手机系统,因此,任何人都可能根据自己的喜好将手机系统中的所有功能重新编写。这使得越来越多的人关注这个操作系统。本次作品音乐播放器就是基于 Android 平台的。

4、1.2 编写目的现今社会生活紧张,而欣赏音乐是其中最好的舒缓压力的方式之一,本项目的目的是开发一个可以播放主流音乐文件格式的播放器,本设计实现的主要功能是播放 Mp3,Wav 多种格式的音乐文件,并且能够控制播放,暂停,停止,播放列等基本播放控制功能,界面简明,操作简单。 本项目是一款基于 Android 手机平台的音乐播放器,使 Android 手机拥有个性的多媒体播放器,使手机显得更生动灵活化,与人们更为接近,让手机主人随时随地处于音乐视频的旋律之中。使人们的生活更加多样化。也使设计者更加熟练 Android 的技术和其它在市场上的特点。第二章 系统需求分析2.1 功能需求(用例图分析)根

5、据项目的目标,我们可获得项目系统的基本需求,以下从不同角度来描述系统的需求,并且使用用例图来描述,系统的功能需求,我们分成四部分来概括,即播放器的基本控制需要,播放列表管理需求,播放器友好性需求和播放器扩展卡需求。以下分别描述:2.1.1 播放器的用例图假设安装了音乐播放器的用户是系统的主要设计对象,其拥有以下操作,启动软件、播放音乐、暂停播放、停止播放、退出软件,其用例图如下uc Use Case View乐乐乐乐乐乐乐乐乐乐乐乐乐乐乐乐乐乐乐乐乐乐乐乐乐乐乐乐乐乐乐图 2.1 播放器基本用例图2.1.2 用例分析用例名称:启动软件参与者:用户目标:使得用户启动软件并加载手机和 sd 卡上的

6、音频文件到播放列表前置条件:无基本事件流:1.用户启动软件2.播放器将播放列表中的当前的歌曲用例名称:播放参与者:用户目标:使得用户可以播放在播放列表中选中的歌曲前置条件:播放器正在运行基本事件流:1.用户单击“播放”按钮2.播放器将播放列表中的当前的歌曲用例名称:暂停参与者:用户目标:使得用户可以暂停正在播放的歌曲前置条件:歌曲正在播放且未停止和暂停基本事件流:1.用户单击“暂停”按钮2.播放器将暂停当前的歌曲用例名称:停止参与者:用户目标:使得用户可以停止正在播放的歌曲前置条件:歌曲正在播放或暂停基本事件流:1.用户单击“停止”按钮2.播放器将停止当前播放的歌曲用例名称:推出参与者:用户目

7、标:使得用户退出或者后台播放音乐前置条件:程序在运行基本事件流:1.用户按返回键2.播放器退出或者进入后台播放第三章 概要设计3.1 软件播放流程图Step1.启动软件后,软件自动检索手机和 sd 卡的音频文件,并组织显示成列表.Step2.点击列表的歌曲名字。Step3.播放音乐。Step4.点击暂停,音乐暂停Step5.点击播放 转到 step3Step6.点击停止 停止播放音乐Step7.点击退出,若音乐处于播放状态,则音乐转向后台播放,界面退出。Step8.点击退户,若音乐处于暂停或者停止状态,直接退出。启动软件显示歌曲播放列表检索手机和s d 卡音频文件选择播放点 击退出播放歌曲是否

8、播放音乐是后台播放退出软件否图 3.1 音乐播放器流程图3.2 软件类图系统设计了 4 个类,分别是播放音乐的服务类 MusicPlayerService;主要用于获取 android 系统中的音频文件,并提供访问接口的 MusicInfoController 类;继承于 ListActivity,主要用于显示歌曲列表的 MusicList 类和程序的生存类MusicPlayerApp 类。图 3.2 软件类图图 3.2 音乐播放器类图音乐播放器类MusicInfoController类MusicList类MusicPlayerApp类MusicPlayerService第四章 详细设计4.1

9、MusicInfoController 类这个类继承于 service,是播放音乐的服务类。播放音乐,暂停音乐,停止播放等操作都封装在这个类中。主要的执行动作有:4.1.1.类启动onCreate()mMediaPlayer = new MediaPlayer();/分配一个播放对象mMediaPlayer.setOnPreparedListener(mPrepareListener);/绑定之前mMediaPlayer.setOnCompletionListener(mCompleteListener);/绑定之后4.1.2.服务绑定 activity MediaPlayer.OnCompl

10、etionListener 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, Stri

11、ng 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

12、, 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 |mCurs

13、or.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 But

14、ton.OnClickListener() public void onClick(View v) if (mMusicPlayerService != null /音乐播放的服务暂停mPlayPauseButton.setText(R.string.play);/改变按钮文字 else if (mMusicPlayerService != null)mMusicPlayerService.start();/如果已经是暂停,则播放音乐mPlayPauseButton.setText(R.string.pause);/改变文字);4.3.3 停止mStopButton.setOnClickLis

15、tener(new Button.OnClickListener() public void onClick(View v) / Perform action on clickif (mMusicPlayerService != null ) mTextView.setVisibility(View.VISIBLE);/改变文字状态mPlayPauseButton.setVisibility(View.INVISIBLE);/隐藏按钮mStopButton.setVisibility(View.INVISIBLE);/隐藏停止按钮mMusicPlayerService.stop();/后台音乐

16、停止播放);4.4MusicPlayerApp 类该类继承与 Application,是程序的生存类。可以标识音乐播放器的生命周期,包括音乐在后台播放等。4.4.1 单例模式public void onCreate()super.onCreate();mMusicInfoController = MusicInfoController.getInstance(this); /返回该类的一个唯一实例public MusicInfoController getMusicInfoController()return mMusicInfoController;第 5 章 系统实现5.1 软件部署系统编

17、译生成 apk 文件,将 apk 文件拷到手机或者 sd 卡中,直接打开即可安装,或者安装 360 手机助手通过 usb 调试的方式进行安装。图 5.1 软件图标5.2 启动软件启动软件后,加载歌曲列表现在这个界面上,如 01 表示歌曲名,unknown表示歌曲的演唱者图 5.2 软件启动界面5.3 播放界面从加载的歌曲列表中点击要播放的歌曲,开始播放图 5.3 音乐播放界面第六章 结 论(1) 通过对 Android 手机平台的音乐播放器软件的开发,使我对 Android 音乐播放器系统的整体设计有一个深入的了解,对整个流程也会有一个清晰的认识。开发 Android 音乐播放器,要抓住开发的

18、核心部分,音乐播放器大体由播放主界面、播放列表、菜单、播放设置、文件浏览、歌曲搜索六大核心组成。(3) 本次程序设计,对播放器的系统结构框架做了精心的构思与设计,采用主要开发工具是 Eclips4.0+Java 语言的支持,Android Development Tool 的插件,和 Android SDK2.1 版本的全面结合,才使整个音乐播放器系统得以实现。附录一: 代码1 获取全部音频文件代码private Cursor query(Uri uri, String prjs, String selections, String selectArgs, String order)Conte

19、ntResolver resolver = pApp.getContentResolver();/取得papp的一个resolver实例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.

20、DEFAULT_SORT_ORDER);2 绑定歌曲列表到 listview 控件public void 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.setTex

21、t(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();/取得一个实例

22、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);/取得显示文本控件mPlayP

23、auseButton = (Button) findViewById(R.id.play_pause_btn);/取得开始和暂停控件mStopButton = (Button) findViewById(R.id.stop_btn);/取得停止控件mPlayPauseButton.setOnClickListener(new Button.OnClickListener() /播放和暂停按钮的事件绑定public void onClick(View v) if (mMusicPlayerService != null /暂停播放mPlayPauseButton.setText(R.string

24、.play);/改变控件文字 else if (mMusicPlayerService != null)mMusicPlayerService.start();/服务没启动则启动mPlayPauseButton.setText(R.string.pause);/改变控件文字为暂停);mStopButton.setOnClickListener(new Button.OnClickListener() /停止按钮的事件绑定public void onClick(View v) if (mMusicPlayerService != null ) mTextView.setVisibility(Vi

25、ew.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);regi

26、sterReceiver(mPlayerEvtReceiver, filter);/放入后台4.音乐播放服务MediaPlayer.OnCompletionListener mCompleteListener = new MediaPlayer.OnCompletionListener() /实例化化一个listener 匿名类public void onCompletion(MediaPlayer mp) /完成绑定时调用broadcastEvent(PLAY_COMPLETED);/广播消息;MediaPlayer.OnPreparedListener mPrepareListener =

27、 new MediaPlayer.OnPreparedListener() /绑定钱调用public void onPrepared(MediaPlayer mp) broadcastEvent(PLAYER_PREPARE_END);/广播事件; private void broadcastEvent(String what)Intent i = new Intent(what);sendBroadcast(i);/广播消息public void onCreate()super.onCreate();mMediaPlayer = new MediaPlayer();/实例化一个播放类mMed

28、iaPlayer.setOnPreparedListener(mPrepareListener);/执行绑定前系列动作mMediaPlayer.setOnCompletionListener(mCompleteListener);/执行绑定后系列动作public class LocalBinder extends Binderpublic MusicPlayerService getService()return MusicPlayerService.this;public IBinder onBind(Intent intent)/绑定return mBinder;public void s

29、etDataSource(String path)/取得播放文件的绝对路径trymMediaPlayer.reset();mMediaPlayer.setDataSource(path);mMediaPlayer.prepare();catch (IOException e)return;catch (IllegalArgumentException e)return;public void start()/开始播放mMediaPlayer.start();public void stop()/停止播放mMediaPlayer.stop();public void pause()/暂停播放mM

30、ediaPlayer.pause();public boolean isPlaying()/判断是否在播放return mMediaPlayer.isPlaying();public int getDuration()/取得音乐的时间return mMediaPlayer.getDuration();public int getPosition()/取得正在播放的时间return mMediaPlayer.getCurrentPosition();public long seek(long whereto)/调到想要播放的时间mMediaPlayer.seekTo(int) whereto);return whereto;

展开阅读全文
相关资源
猜你喜欢
相关搜索

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

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报