安卓音乐播放器之欧阳地创编.doc
《安卓音乐播放器之欧阳地创编.doc》由会员分享,可在线阅读,更多相关《安卓音乐播放器之欧阳地创编.doc(24页珍藏版)》请在冰豆网上搜索。
欧阳地创编
《物联网移动应用开发》
时间:
2021.03.04
创作:
欧阳地
课程设计
题目音乐播放器设计
班级物联网1303
学号311309080318
姓名牟俊强
指导老师刘永利
2016年6月25日
1.项目需求
当今社会的生活节奏越来越快,人们对手机的要求也越来越高,由于手机市场发展迅速,使得手机操作系统也出现了不同各类,现在的市场上主要有三个手机操作系统,Windowsmobile,symbian,以及谷歌的Android操作系统,其中占有开放源代码优势的Android系统有最大的发展前景。
那么能否在手机上拥有自己编写的个性音乐播放器呢?
能的,谷歌Android系统就能做到。
本文的音乐播放器就是基于谷歌Android手机平台的播放器。
Android:
是谷歌于2007年公布的开放式源代码手机系统,它的开放性就优于其它封闭式的手机系统,因此,任何人都可能根据自己的喜好将手机系统中的所有功能重新编写。
这使得越来越多的人关注这个操作系统。
本次作品音乐播放器就是基于Android平台的。
现今社会生活紧张,而欣赏音乐是其中最好的舒缓压力的方式之一,本项目的目的是开发一个可以播放主流音乐文件格式的播放器,本设计实现的主要功能是播放Mp3,Wav多种格式的音乐文件,并且能够控制播放,暂停,停止,播放列等基本播放控制功能,界面简明,操作简单。
本项目是一款基于Android手机平台的音乐播放器,使Android手机拥有个性的多媒体播放器,使手机显得更生动灵活化,与人们更为接近,让手机主人随时随地处于音乐视频的旋律之中。
使人们的生活更加多样化。
也使设计者更加熟练Android的技术和其它在市场上的特点。
1.1开发环境
Eclipse、AndroidSDK3.2.0
2.系统需求分析
2.1功能需求(用例图分析)
根据项目的目标,我们可获得项目系统的基本需求,以下从不同角度来描述系统的需求,并且使用用例图来描述,系统的功能需求,我们分成四部分来概括,即播放器的基本控制需要,播放列表管理需求,播放器友好性需求和播放器扩展卡需求。
以下分别描述:
2.1.1播放器的用例图
假设安装了音乐播放器的用户是系统的主要设计对象,其拥有以下操作,启动软件、播放音乐、暂停播放、停止播放、退出软件,其用例图如下
图2.1播放器基本用例图
2.1.2用例分析
用例名称:
启动软件
参与者:
用户
目标:
使得用户启动软件并加载手机和sd卡上的音频文件到播放列表
前置条件:
无
基本事件流:
1.用户启动软件
2.播放器将播放列表中的当前的歌曲
用例名称:
播放
参与者:
用户
目标:
使得用户可以播放在播放列表中选中的歌曲
前置条件:
播放器正在运行
基本事件流:
1.用户单击“播放”按钮
2.播放器将播放列表中的当前的歌曲
用例名称:
暂停
参与者:
用户
目标:
使得用户可以暂停正在播放的歌曲
前置条件:
歌曲正在播放且未停止和暂停
基本事件流:
1.用户单击“暂停”按钮
2.播放器将暂停当前的歌曲
用例名称:
停止
参与者:
用户
目标:
使得用户可以停止正在播放的歌曲
前置条件:
歌曲正在播放或暂停
基本事件流:
1.用户单击“停止”按钮
2.播放器将停止当前播放的歌曲
用例名称:
退出
参与者:
用户
目标:
使得用户退出或者后台播放音乐
前置条件:
程序在运行
基本事件流:
1.用户按返回键
2.播放器退出或者进入后台播放
3.概要设计
3.1软件播放流程图
Step1.启动软件后,软件自动检索手机和sd卡的音频文件,并组织显示成列表.
Step2.点击列表的歌曲名字。
Step3.播放音乐。
Step4.点击暂停,音乐暂停
Step5.点击播放转到step3
Step6.点击停止停止播放音乐
Step7.点击退出。
启动软件
自动检索手机中的音乐文件,并显示
选择歌曲,点击播放
暂停/退出软件
图3.1音乐播放器流程图
4.界面展示
4.1软件部署
系统编译生成apk文件,将apk文件拷到手机或者sd卡中,直接打开即可安装。
4.2启动软件
打开软件后的界面
4.3歌曲列表界面
歌曲列表界面
4.4播放界面
5.部分源代码
以下给出功能实现代码,布局,风格等代码量过大,放在压缩文件中
文件夹显示文件如图所示
播放器页面布局
Main.xml代码如下android="
android:
orientation="vertical"
android:
layout_width="fill_parent"
android:
layout_height="fill_parent"
android:
background="@drawable/tupian"
>
android:
id="@+id/android:
list"
android:
layout_width="fill_parent"
android:
layout_height="200dip"
android:
layout_weight="1"
android:
drawSelectorOnTop="false"
/>
android:
id="@+id/SeekBar01"
android:
layout_height="wrap_content"
android:
layout_width="fill_parent"
android:
max="100"
android:
progress="0"
android:
secondaryProgress="0"
android:
visibility="visible"
/>
android:
layout_height="wrap_content"
android:
layout_width="fill_parent"
android:
id="@+id/currentProgress"
/>
android:
layout_height="wrap_content"
android:
layout_width="fill_parent"
android:
layout_y="300dp"
android:
id="@+id/curtimeandtotaltime"
/>
android:
orientation="horizontal"
android:
layout_width="fill_parent"
android:
layout_height="wrap_content"
>
android:
id="@+id/front_button"
android:
layout_width="wrap_content"
android:
layout_height="wrap_content"
android:
layout_marginLeft="10dip"
android:
background="@drawable/first1"/>
android:
id="@+id/stop_button"
android:
layout_width="wrap_content"
android:
layout_height="wrap_content"
android:
background="@drawable/stop1"
android:
layout_marginLeft="10dip"
/>
android:
id="@+id/start_button"
android:
layout_width="wrap_content"
android:
layout_height="wrap_content"
android:
background="@drawable/start1"
android:
layout_marginLeft="10dip"
/>
android:
id="@+id/pause_button"
android:
layout_width="wrap_content"
android:
layout_height="wrap_content"
android:
background="@drawable/pose1"
android:
layout_marginLeft="10dip"
/>
android:
id="@+id/next_button"
android:
layout_width="wrap_content"
android:
layout_height="wrap_content"
android:
background="@drawable/next1"
android:
layout_marginLeft="10dip"
/>
MainActivity.Java代码如下
importjava.io.File;
importjava.io.FilenameFilter;
importjava.io.IOException;
importjava.util.ArrayList;
importjava.util.List;
importandroid.app.ListActivity;
importandroid.graphics.Color;
importandroid.graphics.drawable.GradientDrawable;
importandroid.graphics.drawable.GradientDrawable.Orientation;
importandroid.media.MediaPlayer;
importandroid.media.MediaPlayer.OnCompletionListener;
importandroid.os.Bundle;
importandroid.os.Handler;
importandroid.view.KeyEvent;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.ArrayAdapter;
importandroid.widget.ImageButton;
importandroid.widget.ListView;
importandroid.widget.SeekBar;
importandroid.widget.SeekBar.OnSeekBarChangeListener;
importandroid.widget.TextView;
publicclassMainActivityextendsListActivity{
privateImageButtonmFrontImageButton=null;
privateImageButtonmStopImageButton=null;
privateImageButtonmSta