安卓音乐播放器

上传人:无*** 文档编号:73645556 上传时间:2022-04-12 格式:DOC 页数:23 大小:5.14MB
收藏 版权申诉 举报 下载
安卓音乐播放器_第1页
第1页 / 共23页
安卓音乐播放器_第2页
第2页 / 共23页
安卓音乐播放器_第3页
第3页 / 共23页
资源描述:

《安卓音乐播放器》由会员分享,可在线阅读,更多相关《安卓音乐播放器(23页珍藏版)》请在装配图网上搜索。

1、物联网移动应用开发 课 程 设 计题 目 音乐播放器设计 班 级 物联网1303 学 号 311309080318 姓 名 牟俊强 指导老师 刘永利 2016年 6月 25日1.项目需求当今社会的生活节奏越来越快,人们对手机的要求也越来越高,由于手机市场发展迅速,使得手机操作系统也出现了不同各类,现在的市场上主要有三个手机操作系统,Windows mobile,symbian,以及谷歌的Android操作系统,其中占有开放源代码优势的Android系统有最大的发展前景。那么能否在手机上拥有自己编写的个性音乐播放器呢?能的,谷歌Android系统就能做到。本文的音乐播放器就是基于谷歌Androi

2、d手机平台的播放器。Android:是谷歌于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.IOExce

7、ption;import 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.OnCom

8、pletionListener;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 a

9、ndroid.widget.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 = nu

10、ll;private 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();privat

11、e int currentListItem = 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(); initS

12、tartMusic(); 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.

13、size(); else 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(););p

14、ublic void 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()mPauseImageBu

15、tton = (ImageButton)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_bu

16、tton);mNextImageButton.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)findView

17、ById(R.id.curtimeandtotaltime); mSeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) /* 如果拖动进度发生改变,则显示当前进度值 */curProgressText.setText(当前进度: + progress);public void onStartTrackingTouch(SeekBar arg0) curProgres

18、sText.setText(拖动中.);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);m

19、MediaPlayer.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;elseplayMus

20、ic(MUSIC_PATH + 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 positio

21、n, long id) 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(fi

22、le.getName();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(update

23、sb);Runnable updatesb =new Runnable()public void run() int position = mMediaPlayer.getCurrentPosition();int mMax = mMediaPlayer.getDuration();int sMax = mSeekBar.getMax();mSeekBar.setProgress(position * sMax / mMax);curtimeAndTotaltime.setText(当前播放时间: + position / 1000 + 秒+ n歌曲总时间: + mMax / 1000 + 秒

24、);/ 每秒钟更新一次mPercentHandler.postDelayed(updatesb, 1000);/过滤文件类型class MusicFilter implements FilenameFilterpublic boolean accept(File dir, String name) /这里还可以设置其他格式的音乐文件return (name.endsWith(.mp3);6.结论心得 (1)通过本次开发解决了诸如SD卡音乐文件搜索并显示、联网搜索歌曲等难题,对安卓的开发有了更深入的认识。(2) 通过对Android手机平台的音乐播放器软件的开发,使我对Android音乐播放器系统的整体设计有一个深入的了解,对整个流程也会有一个清晰的认识。开发Android音乐播放器,要抓住开发的核心部分,音乐播放器大体由播放主界面、播放列表、菜单、播放设置、文件浏览、歌曲搜索六大核心组成。(3) 本次程序设计,对播放器的系统结构框架做了精心的构思与设计,采用主要开发工具是Eclips4.0+Java语言的支持,Android Development Tool的插件,和Android SDK2.1版本的全面结合,才使整个音乐播放器系统得以实现。课程设计教师评语及成绩 指导教师: 日期: 2016年 月 日 课程设计评价

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!