android大作业音乐播放器.docx
- 文档编号:7522477
- 上传时间:2023-05-11
- 格式:DOCX
- 页数:22
- 大小:556.15KB
android大作业音乐播放器.docx
《android大作业音乐播放器.docx》由会员分享,可在线阅读,更多相关《android大作业音乐播放器.docx(22页珍藏版)》请在冰点文库上搜索。
android大作业音乐播放器
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秒之后进入歌单列表
四、软件实现
(一)、开发环境的搭建与配置
1. 下载JDK
JDK即Java Development Kit(Java开发工具包),包括JAVA运行环境,基础类库和JAVA工具,是JAVA运行的基础。
2. 下载Eclipse
Eclipse是开发JAVA程序的软件工具。
3. 下载Android SDK
SDK即Software Development Kit(软件开发工具包)。
Android SDK 指的是Android专属的软件开发工具包。
4. 下载ADT
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
以前SDK直接下载完,在Eclipse里配置路径就可以了,现在貌似变成了一个管理器(SDK Manager),用来管理下载更新,双击之前下载的installer_r22.0.1-windows.exe。
9. 安装SDK Manager
10.安装Platform
仅仅SDK Tools是不够的,我们至少还需要一个Android平台和最新的SDK 平台工具。
启动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手机用USB与电脑相连,打开Eclipse在项目上右键-->运行方式-->androidapplication即可以直接运行进行测试。
1、进入界面的测试:
点击App后直接跳转至进入界面,1.5秒后自动跳转至歌单列表界面
2、歌单界面的测试
a、歌单界面用以显示歌曲列表及其歌曲作者,界面下方显示上次播放的歌曲信息。
b、屏幕左上方为菜单,通过滑动屏幕即可展开菜单列表,可以实现与关于界面的转换
3、我的收藏界面
我的收藏界面用于显示用户收藏的歌曲列表
4、播放界面的测试
界面左上角是返回键,点击可以跳转至歌单列表界面;
界面上方用以显示歌曲的名称,作者姓名;
界面中间部分用以显示歌曲的歌词,并随着歌曲进度而滑动,正在演唱的歌词变红;
歌词下方是进度条,两侧显示歌曲已经播放时间和歌曲总长,用户可以随意拉动进度条以调整歌曲进度,当进度条到达最后时,自动跳转至下一首;
界面最下方是功能键,依次为:
上一首、暂停(播放)、下一首和播放形式,点击上一首按钮即可跳转至上一首歌曲界面,点击暂停按钮即可歌曲暂停且暂停按钮变成播放按钮,点击下一首按钮即可跳转至下一首歌曲界面,点击播放形式按钮可依次改变至随机播放、列表循环和单曲循环,按钮也会依次改变。
5、关于界面的测试
关于界面用于显示APP的功能、开发者、版本号等主要信息
六、软件总结
本次实验旨在利用JAVA编程,实现音乐播放器的基本功能。
这次的软件设计题目,是非常贴近我们生活实际内容,这一类的应用软件大大的娱乐和方便了我们的课余生活,但是亲自动手设计一个音乐播放器对我们来说却有一定的难度。
随着我们对于这方面的学习,从最初的需求分析、搜集资料,到中期的代码编写和检测完善,再到后面的软件演示和文档编写,我们真正学到了不少使用的技术。
本次实验我们小组三人明确分工,一人专门攻克核心代码,一人负责任务量较大、难度较轻的次核心代码,一人负责各种UI设计以及较轻松的代码;同时三人又通力合作,实验初期一起讨论课程的需求分析、共同制定概要设计、制定分工计划,实验中期针对每个人出现
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- android 作业 音乐 播放