android大作业音乐播放器.docx

上传人:b****5 文档编号:7522477 上传时间:2023-05-11 格式:DOCX 页数:22 大小:556.15KB
下载 相关 举报
android大作业音乐播放器.docx_第1页
第1页 / 共22页
android大作业音乐播放器.docx_第2页
第2页 / 共22页
android大作业音乐播放器.docx_第3页
第3页 / 共22页
android大作业音乐播放器.docx_第4页
第4页 / 共22页
android大作业音乐播放器.docx_第5页
第5页 / 共22页
android大作业音乐播放器.docx_第6页
第6页 / 共22页
android大作业音乐播放器.docx_第7页
第7页 / 共22页
android大作业音乐播放器.docx_第8页
第8页 / 共22页
android大作业音乐播放器.docx_第9页
第9页 / 共22页
android大作业音乐播放器.docx_第10页
第10页 / 共22页
android大作业音乐播放器.docx_第11页
第11页 / 共22页
android大作业音乐播放器.docx_第12页
第12页 / 共22页
android大作业音乐播放器.docx_第13页
第13页 / 共22页
android大作业音乐播放器.docx_第14页
第14页 / 共22页
android大作业音乐播放器.docx_第15页
第15页 / 共22页
android大作业音乐播放器.docx_第16页
第16页 / 共22页
android大作业音乐播放器.docx_第17页
第17页 / 共22页
android大作业音乐播放器.docx_第18页
第18页 / 共22页
android大作业音乐播放器.docx_第19页
第19页 / 共22页
android大作业音乐播放器.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

android大作业音乐播放器.docx

《android大作业音乐播放器.docx》由会员分享,可在线阅读,更多相关《android大作业音乐播放器.docx(22页珍藏版)》请在冰点文库上搜索。

android大作业音乐播放器.docx

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;

privateListmusicInfoList;

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设计以及较轻松的代码;同时三人又通力合作,实验初期一起讨论课程的需求分析、共同制定概要设计、制定分工计划,实验中期针对每个人出现

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2