版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、物联网移动应用开发 课 程 设 计题 目 音乐播放器设计 班 级 物联网1303 学 号 8 姓 名 牟俊强 指导老师 刘永利 2016年 6月 25日1.项目需求当今社会的生活节奏越来越快,人们对手机的要求也越来越高,由于手机市场发展迅速,使得手机操作系统也出现了不同各类,现在的市场上主要有三个手机操作系统,Windows mobile,symbian,以及谷歌的Android操作系统,其中占有开放源代码优势的Android系统有最大的发展前景。那么能否在手机上拥有自己编写的个性音乐播放器呢?能的,谷歌Android系统就能做到。本文的音乐播放器就是基于谷歌Android手机平台的播放器。A
2、ndroid:是谷歌于2007年公布的开放式源代码手机系统,它的开放性就优于其它封闭式的手机系统,因此,任何人都可能根据自己的喜好将手机系统中的所有功能重新编写。这使得越来越多的人关注这个操作系统。本次作品音乐播放器就是基于Android平台的。现今社会生活紧张,而欣赏音乐是其中最好的舒缓压力的方式之一,本项目的目的是开发一个可以播放主流音乐文件格式的播放器,本设计实现的主要功能是播放Mp3,Wav多种格式的音乐文件,并且能够控制播放,暂停,停止,播放列等基本播放控制功能,界面简明,操作简单。 本项目是一款基于Android手机平台的音乐播放器,使Android手机拥有个性的多媒体播放器,使手
3、机显得更生动灵活化,与人们更为接近,让手机主人随时随地处于音乐视频的旋律之中。使人们的生活更加多样化。也使设计者更加熟练Android的技术和其它在市场上的特点。1.1开发环境Eclipse、Android SDK 3.2.02.系统需求分析2.1 功能需求(用例图分析)根据项目的目标,我们可获得项目系统的基本需求,以下从不同角度来描述系统的需求,并且使用用例图来描述,系统的功能需求,我们分成四部分来概括,即播放器的基本控制需要,播放列表管理需求,播放器友好性需求和播放器扩展卡需求。以下分别描述:2.1.1 播放器的用例图假设安装了音乐播放器的用户是系统的主要设计对象,其拥有以下操作,启动软件
4、、播放音乐、暂停播放、停止播放、退出软件,其用例图如下图2.1 播放器基本用例图2.1.2用例分析用例名称:启动软件参与者:用户目标:使得用户启动软件并加载手机和sd卡上的音频文件到播放列表前置条件:无基本事件流:1.用户启动软件 2.播放器将播放列表中的当前的歌曲用例名称:播放参与者:用户目标:使得用户可以播放在播放列表中选中的歌曲前置条件:播放器正在运行基本事件流:1.用户单击“播放”按钮 2.播放器将播放列表中的当前的歌曲用例名称:暂停参与者:用户目标:使得用户可以暂停正在播放的歌曲前置条件:歌曲正在播放且未停止和暂停基本事件流:1.用户单击“暂停”按钮 2.播放器将暂停当前的歌曲用例名
5、称:停止参与者:用户目标:使得用户可以停止正在播放的歌曲前置条件:歌曲正在播放或暂停基本事件流:1.用户单击“停止”按钮 2.播放器将停止当前播放的歌曲用例名称:退出参与者:用户目标:使得用户退出或者后台播放音乐前置条件:程序在运行基本事件流:1.用户按返回键 2.播放器退出或者进入后台播放3.概要设计3.1软件播放流程图Step1.启动软件后,软件自动检索手机和sd卡的音频文件,并组织显示成列表.Step2.点击列表的歌曲名字。Step3.播放音乐。Step4.点击暂停,音乐暂停Step5.点击播放 转到step3Step6.点击停止 停止播放音乐Step7.点击退出。 启动软件自动检索手机
6、中的音乐文件,并显示 选择歌曲,点击播放暂停/退出软件图3.1音乐播放器流程图4.界面展示4.1软件部署系统编译生成apk文件,将apk文件拷到手机或者sd卡中,直接打开即可安装。4.2启动软件打开软件后的界面4.3 歌曲列表界面歌曲列表界面4.4 播放界面5.部分源代码以下给出功能实现代码,布局,风格等代码量过大,放在压缩文件中文件夹显示文件如图所示播放器页面布局Main.xml代码如下 MainActivity.Java代码如下import java.io.File;import java.io.FilenameFilter;import java.io.IOException;impor
7、t java.util.ArrayList;import java.util.List;import android.app.ListActivity;import android.graphics.Color;import android.graphics.drawable.GradientDrawable;import android.graphics.drawable.GradientDrawable.Orientation;import android.media.MediaPlayer;import android.media.MediaPlayer.OnCompletionList
8、ener;import android.os.Bundle;import android.os.Handler;import android.view.KeyEvent;import android.view.View;import android.view.View.OnClickListener;import android.widget.ArrayAdapter;import android.widget.ImageButton;import android.widget.ListView;import android.widget.SeekBar;import android.widg
9、et.SeekBar.OnSeekBarChangeListener;import android.widget.TextView;public class MainActivity extends ListActivity private ImageButton mFrontImageButton = null;private ImageButton mStopImageButton = null;private ImageButton mStartImageButton = null;private ImageButton mPauseImageButton = null;private
10、ImageButton mNextImageButton = null;/*定义进度handler,显示百分比进度*/Handler mPercentHandler = new Handler();private SeekBar mSeekBar=null;private TextView curProgressText=null;private TextView curtimeAndTotaltime=null;public MediaPlayer mMediaPlayer;private List mMusicList = new ArrayList();private int curre
11、ntListItem = 0;private static final String MUSIC_PATH = new String(/sdcard/);Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); musicList(); mMediaPlayer = new MediaPlayer(); initmFrontMusic(); initStopMusic(); initStartMusic()
12、; initPauseMusic(); initNextMusic(); initSeekBar(); public void initmFrontMusic()mFrontImageButton = (ImageButton)findViewById(R.id.front_button);mFrontImageButton.setOnClickListener(new OnClickListener()public void onClick(View arg0) if(-currentListItem = 0) currentListItem = mMusicList.size(); els
13、e playMusic(MUSIC_PATH + mMusicList.get(currentListItem); );public void initStopMusic()mStopImageButton = (ImageButton)findViewById(R.id.stop_button);mStopImageButton.setOnClickListener(new OnClickListener()public void onClick(View arg0) if(mMediaPlayer.isPlaying()mMediaPlayer.reset(););public void
14、initStartMusic()mStartImageButton = (ImageButton)findViewById(R.id.start_button);mStartImageButton.setOnClickListener(new OnClickListener()public void onClick(View arg0) playMusic(MUSIC_PATH + mMusicList.get(currentListItem);startSeekBarUpdate(););public void initPauseMusic()mPauseImageButton = (Ima
15、geButton)findViewById(R.id.pause_button);mPauseImageButton.setOnClickListener(new OnClickListener()public void onClick(View arg0) if(mMediaPlayer.isPlaying()mMediaPlayer.pause();elsemMediaPlayer.start(););public void initNextMusic()mNextImageButton = (ImageButton)findViewById(R.id.next_button);mNext
16、ImageButton.setOnClickListener(new OnClickListener()public void onClick(View arg0) nextMusic(););public void initSeekBar()/*初始化拖动条和当前进度显示值*/ mSeekBar=(SeekBar)findViewById(R.id.SeekBar01); curProgressText=(TextView)findViewById(R.id.currentProgress); curtimeAndTotaltime=(TextView)findViewById(R.id.c
17、urtimeandtotaltime); mSeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) /* 如果拖动进度发生改变,则显示当前进度值 */curProgressText.setText(当前进度: + progress);public void onStartTrackingTouch(SeekBar arg0) curProgressText.setTe
18、xt(拖动中.);public void onStopTrackingTouch(SeekBar arg0) int dest = mSeekBar.getProgress(); int mMax = mMediaPlayer.getDuration();int sMax = mSeekBar.getMax();mMediaPlayer.seekTo(mMax*dest/sMax););private void playMusic(String path)try mMediaPlayer.reset();mMediaPlayer.setDataSource(path);mMediaPlayer
19、.prepare();mMediaPlayer.start();mMediaPlayer.setOnCompletionListener(new OnCompletionListener()public void onCompletion(MediaPlayer arg0) nextMusic();); catch (IOException e) e.printStackTrace();private void nextMusic()if(+currentListItem = mMusicList.size()currentListItem = 0;elseplayMusic(MUSIC_PA
20、TH + mMusicList.get(currentListItem);Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) if(keyCode = KeyEvent.KEYCODE_BACK) mMediaPlayer.stop(); mMediaPlayer.release(); return super.onKeyDown(keyCode, event);Overrideprotected void onListItemClick(ListView l, View v, int position, long id)
21、 currentListItem = position;playMusic(MUSIC_PATH + mMusicList.get(position);super.onListItemClick(l, v, position, id);/播放列表public void musicList()File home = new File(MUSIC_PATH);if(home.listFiles(new MusicFilter().length 0)for(File file : home.listFiles(new MusicFilter()mMusicList.add(file.getName(
22、);ArrayAdapter musicList = new ArrayAdapter(MainActivity.this,R.layout.musicitem,mMusicList);setListAdapter(musicList);/*更新拖动条进度*/public void startSeekBarUpdate() mPercentHandler.post(start);Runnable start = new Runnable() public void run() / 用一个handler更新SeekBarmPercentHandler.post(updatesb);Runnable updatesb =new Runnable()public void run() int position = mMediaPlayer.getCurrentPosition();int mMax = mMediaP
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025高考物理步步高同步练习选修3第二章 气体、固体和液体专题强化 变质量问题 理想气体的图像问题含答案
- 0-8岁儿童学习环境创设-读书心得
- 广东省高校毕业生就业形势及对策
- 2024陆上半直驱风力发电机组
- 工程项目施工内部承包合同(标准)
- 高三化学一轮复习课件第17讲:氯及其化合物
- 并列句和状语从句真题
- 《大学美育》 课件 17.模块五 第十七章 笔墨生辉的书法艺术之美
- 高等数学(第五版)课件 9.1 行列式的定义
- 高等数学(第五版)课件 1.3 两个重要极限
- 小学生一、二、三年级家庭奖罚制度表
- 中建(轮扣架)模板工程施工方案
- 关于国有企业工会助力企业高质量发展的思考
- 船舶安全事故应急处置制度(二篇)
- 二年级上册阅读计划(教材“快乐读书吧”)
- 检验指导书(SIP样板)
- 【课件】Unit+1Using+language+课件-高一上学期英语外研版(2019)必修第一册
- 内分泌科运用PDCA循环提高内分泌科患者特殊试验的知晓率品管圈成果汇报书
- 初中数学-绝对值教学设计学情分析教材分析课后反思
- 政教处迎中秋庆国庆主题黑板报评比活动方案
- ZZ029-养老照护赛项赛题(10套)-2023年全国职业院校技能大赛拟设赛项赛题(10套)
评论
0/150
提交评论