最新android大作业音乐播放器.docx
- 文档编号:2664456
- 上传时间:2023-05-04
- 格式:DOCX
- 页数:24
- 大小:645.85KB
最新android大作业音乐播放器.docx
《最新android大作业音乐播放器.docx》由会员分享,可在线阅读,更多相关《最新android大作业音乐播放器.docx(24页珍藏版)》请在冰点文库上搜索。
最新android大作业音乐播放器
软件技术系列课程
Android大作业
(2014/2015学年第一学期)
题目:
音乐播放器的分析与设计
专业软件工程(服务外包)
学生姓名单珺瑜
班级学号B12041305
指导教师张怡婷易磊许鹏
指导单位南京邮电大学计算机学院
诚迈科技
日期2014.12.30
一、课题内容和要求
音乐播放器,作为移动设备基础配备软件之一,主要功能包括从SDCard中读取音乐、显示播放音乐列表、播放音乐、显示音乐歌词、实现上一首、下一首、暂停、选择播放形式等功能。
本论文的音乐播放器采用了Android开源系统技术,利用Java语言和Eclipse编辑工具对播放器进行编写。
同时给出了详细的系统设计过程、主要界面设计及主要功能运行流程图
二、需求分析
本课题基于Android手机平台上开发的音乐播放器主要设计了四个界面,包括:
欢迎界面,主界面,播放界面和关于界面。
每个界面的主要功能为:
欢迎界面为显示App的logo;
主界面利用ListView显示读取SDCard后的App中的全部歌曲列表,通过滑动屏幕并选择可以实现与我的收藏界面、关于界面的切换,通过点击具体歌曲可以实现与播放界面的切换;
我的收藏界面利用ListView显示用户收藏的歌曲列表,通过滑动屏幕并选择可以实现与主界面、关于界面的切换,通过点击具体歌曲可以实现与播放界面的切换。
播放界面用以显示正在播放的歌曲的歌曲名、歌手、歌词等主要信息,并设置按钮实现前一曲、后一曲、播放暂停等功能,通过播放形式按钮可以选择单曲循环、随机播放或者是顺序播放,除此之外,界面下方利用Android自带seekbar设置的进度条可以根据用户需要调节播放进度;
关于界面用以显示App的主要功能等信息。
三、软件设计
(一)、系统主要功能模块包括:
1、欢迎界面:
初始化Intent以实现欢迎界面开始1.5秒之后进入歌单列表界面。
2、歌单列表:
a、歌曲:
利用ListView类显示歌曲列表,点击歌曲名称即选定歌曲启动音乐播放器,播放选中的歌曲
b、菜单:
点击关于即可跳转至关于界面,点击我的收藏即可跳转至我的收藏界面
3、我的收藏界面:
a、歌曲:
利用ListView类显示歌曲列表,点击歌曲名称即选定歌曲启动音乐播放器,播放选中的歌曲
b、菜单:
点击关于即可跳转至关于界面,点击歌曲列表即可跳转至主界面
4、播放界面:
a、播放:
选择音乐后,点击播放按钮启动音乐播放器,即当MSG=MEDIA_PLAY时,播放所选中的歌曲,执行playMusic;
b、暂停:
点击暂停键,即当MSG=MEDIA_PAUSE时,停止正在播放的歌曲,执行pauseMusic;
c、上一曲:
点击上一曲,即当MSG=MEDIA_PREVIOUS时,停止正在播放的歌曲,播放播放列表中上一首歌曲;
d、下一曲:
点击下一曲,即当MSG=MEDIA_NEXT时,停止正在播放的歌曲,播放播放列表中下一首歌曲;
e、播放模式:
点击播放模式,利用MusicCompleteListener类可以依次改变播放模式至随机播放、列表循环或者单曲循环,进而执行randomRepeat、allRepeat或者singleRepeat;
(1)随机播放:
利用系统随机生成一个0—1之间的随机数乘当前position,再用int取整,即为下一首歌曲的position
(2)列表循环:
利用position变量,当position++!
=NULL时,position自增,否则position=0
(3)单曲循环:
position不发生任何变化
f、进度条:
利用Android自带的seekbar设置进度条,用户可以根据进度条来自主控制歌曲播放进度,随意跳转;
g、歌词显示:
利用LyricView类完成歌词随着时间滚动显示的功能。
5、关于界面:
利用LinearLayout的线性布局及若干个TextView以显示App主要功能等信息
(二)、App设计简要流程图如下:
4、软件实现
(1)、开发环境的搭建与配置
1. 下载JDK
2. JDK即Java Development Kit(Java开发工具包),包括JAVA运行环境,基础类库和JAVA工具,是JAVA运行的基础。
3.
4.2. 下载Eclipse
5.Eclipse是开发JAVA程序的软件工具。
6.
7.3. 下载Android SDK
8.SDK即Software Development Kit(软件开发工具包)。
Android SDK 指的是Android专属的软件开发工具包。
9.
10.4. 下载ADT
11.ADT,即Android Development Tools(Android开发工具),是在eclipse中开发android应用程序的插件。
5. 安装JDK
运行下载好的jdk-7u25-windows-x64.exe,按提示一步步走。
6. 测试是否安装成功
安装完成之后,可以用下述方法检查JDK是否安装成功:
打开cmd窗口,输入java -version 。
7. 添加环境变量
操作步骤:
计算机->属性->高级系统设置->环境变量->系统变量->Path->编辑
添加JDK的bin目录的路径。
8. 安装Android SDK
9.以前SDK直接下载完,在Eclipse里配置路径就可以了,现在貌似变成了一个管理器(SDK Manager),用来管理下载更新,双击之前下载的installer_r22.0.1-windows.exe。
10.
11.9. 安装SDK Manager
12.
13.10.安装Platform
14.仅仅SDK Tools是不够的,我们至少还需要一个Android平台和最新的SDK 平台工具。
15.启动Android SDK Manager,如下图,勾选Android SDK Platform-tools和Android SDK Build-tools,Android 4.2.2文件夹,Extras下的Android Support Library。
11.添加环境变量
操作步骤:
计算机->属性->高级系统设置->环境变量->系统变量->新建
变量名:
ANDROID_SDK_HOME
添加SDK目录的路径。
12. 安装Eclipse,选择工作空间。
13. 配置ADT
点击Help->Install new Software,然后Add->Archive->找到我们下载好的ADT-22.0.1.zip,同时给个名称,如ADT Plugin
14. 配置SDK
(二)、负责的主要功能和代码
1、欢迎界面
欢迎界面为显示App的logo,点开App图标后出现,1.5秒后自动转入列表界面
publicclassWelcomeActivityextendsActivity//定义WelcomeActivity类
{
@Override
protectedvoidonCreate(BundlesavedInstanceState)//Activity生命周期
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_welcome);
newHandler().postDelayed(newRunnable(){
@Override
publicvoidrun(){
Intentintent=newIntent(WelcomeActivity.this,MusicListActivity.class);//初始化
startActivity(intent);
WelcomeActivity.this.finish();
}
},1500);//欢迎界面开始后1.5秒后自动进入列表界面
}
}
2、关于界面
关于界面用于显示APP的功能、开发者、版本号等主要信息,主要代码如下:
android=" android: orientation="vertical"//垂直布局 android: layout_width="match_parent"//设置文本宽度 android: layout_height="match_parent">//设置文本高度 android: layout_width="match_parent"//设置文本宽度 android: layout_height="wrap_content"//设置文本高度 android: orientation="vertical"//垂直布局 android: gravity="center"//居中 android: background="@drawable/actionbar_background"> android: layout_width="wrap_content"//设置文本宽度 android: layout_height="wrap_content"//设置文本高度 android: textColor="#fff"//设置文本颜色 android: text="Welcometouse" android: layout_marginTop="30dp"/>//设置文本距离顶部距离 android: layout_width="wrap_content"//设置文本宽度 android: layout_height="wrap_content"//设置文本高度 android: text="SmartMusic" android: textColor="#fff"//设置文本颜色 android: textSize="30sp"//设置文本大小 android: layout_marginBottom="30dp"/>//设置文本距离底部距离 android: layout_width="match_parent"//设置文本宽度 android: layout_height="match_parent"//设置文本高度 android: orientation="vertical"//垂直布局 android: gravity="center"> android: text="Descriptions" android: layout_width="wrap_content"//设置文本宽度 android: layout_height="wrap_content"//设置文本高度 android: textSize="24sp"//设置文本大小 android: textColor="#000"//设置文本颜色 android: layout_gravity="center_horizontal"/> android: layout_width="match_parent"//设置文本宽度 android: layout_height="wrap_content"//设置文本高度 android: layout_margin="20dp"//设置文本大小 android: text="@string/description"/> android: layout_width="wrap_content"//设置文本宽度 android: layout_height="wrap_content"//设置文本高度 android: layout_gravity="center_horizontal" android: layout_margin="10dp"//设置文本大小 android: text="Members" android: textSize="24sp"/>//设置文本大小 android: layout_width="wrap_content"//设置文本宽度 android: layout_height="wrap_content"//设置文本高度 android: text="单珺瑜、王鑫玉、潘磊"/> android: layout_width="wrap_content"//设置文本宽度 android: layout_height="wrap_content"//设置文本高度 android: text="EmailMe" android: textSize="24sp"//设置文本大小 android: layout_marginTop="20dp"/>//设置文本距离顶部距离 android: layout_width="wrap_content"//设置文本宽度 android: layout_height="wrap_content"//设置文本高度 android: text="panlei106@" android: layout_marginTop="5dp"//设置文本距离顶部距离 android: autoLink="email"/> android: layout_marginTop="10dp" android: layout_width="wrap_content"//设置文本宽度 android: layout_height="wrap_content"//设置文本高度 android: text="版本号: 1.0" android: textSize="16sp"//设置文本大小 android: textColor="#ffba1414"/>//设置文本颜色
3、MusicService功能
MusicService用于实现音乐的后台播放功能
publicclassMusicService//定义一个MusicService类
extendsService{
privateMediaPlayermediaPlayer;
privateintposition;
privateList
privateMusicInfomusicInfo;
privateintrepeatState;
privateSharedPreferencessharedPreferences;
@Override
publicvoidonCreate()//Service的生命周期
{
super.onCreate();
mediaPlayer=newMediaPlayer();//初始化
mediaPlayer.setOnCompletionListener(newMusicPlayCompleteListener());
sharedPreferences=getSharedPreferences(AppConstant.APP_DATE,MODE_PRIVATE);
//MusicInfomusicInfo=musicInfoList.get(position);
//playMusic(musicInfo);
//Toast.makeText(this,"servicestart",Toast.LENGTH_SHORT).show();
}
@Override
publicIBinderonBind(Intentintent){
returnnull;
}
@Override
publicintonStartCommand(Intentintent,intflags,intstartId)//Service生命周期
{
repeatState=sharedPreferences.getInt("repeatState",AppConstant.allRepeat);//定义歌曲列表
position=intent.getIntExtra("position",0);//定义位置变量
SharedPreferences.Editoreditor=sharedPreferences.edit();
editor.putInt("lastPosition",position);
mit();
Log.i("repeatState---->",repeatState+"");
musicInfoList=(List)intent.getCharSequenceArrayListExtra("musicInfoList");
musicInfo=musicInfoList.get(position);
if(musicInfo!
=null){
intMSG=intent.getIntExtra("MSG",0);
Log.i("MSG--->",MSG+"");
switch(MSG){
caseAppConstant.MEDIA_PLAY:
playMusic(musicInfo);//播放音乐
break;
caseAppConstant.MEDIA_PAUSE:
pauseMusic();//停止音乐
break;
caseAppConstant.MEDIA_NEXT:
playMusic(musicInfo);
pauseMusic();//播放下一首音乐
break;
caseAppConstant.MEDIA_SEEKTO:
intprogress=intent.getIntExtra("progress",0);
mediaPlayer.seekTo(progress);
continueMusic();//根据用户要求在进度条中寻找用户要求进度,再进行播放
break;
caseAppConstant.MEDIA_CONTINUE:
continueMusic();//继续播放音乐
break;
}
}
//playMusic(musicInfo);
Log.i("posituon--->",position+"");
Log.i("musicInfoList--->",musicInfo.toString());
returnSTART_NOT_STICKY;
}
@Override
publicvoidonDestroy()//Service的生命周期
{
super.onDestroy();
mediaPlayer.release();
}
publicvoidplayMusic(MusicInfomusicInfo){
mediaPlayer.reset();
try{
mediaPlayer.setDataSource(musicInfo.getMusicPath());
mediaPlayer.prepare();
mediaPlayer.start();
}catch(Exceptione){
e.printStackTrace();
}
}
publicvoidpauseMusic(){
mediaPlayer.pause();
}//从暂停位置停止播放音乐
publicvoidstopMusic(){
mediaPlayer.stop();
}//从暂停的音乐停止播放音乐
publicvoidcontinueMusic(){mediaPlayer.start();}
publicclassMusicPlayCompleteListenerimplementsMediaPlayer.OnCompletionListener{
@Override
publicvoidonCompletion(MediaPlayermp){
switch(repeatState){
caseAppConstant.allRepeat:
//实现列表循环播放
if(position==musicInfoList.size()-1){
position=0;
}else{
position+=1;
}
break;
caseAppConstant.randomRepeat:
//实现随机播放
position=(int)((musicInfoList.size()-1)*Math.random());
break;
caseAppConstant.singleRepeat:
//实现单曲循环播放
break;
}
musicInfo=musicInfoList.get(position);
playMusic(musicInfo);
IntentsendIntent=newIntent(AppConstant.UPDATE_VIEW);//发送广播
sendIntent.putExtra("position",position);
SharedPreferences.Editoreditor=sharedPreferences.edit();
editor.putInt("lastPosition",position);
mit();
sendBroadcast(sendIntent);
//Log.i("broadcast---->","发送成功");
}
}
}
五、软件测试
将Android手机用U
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 android 作业 音乐 播放