admin管理员组文章数量:1535041
2024年5月14日发(作者:)
android-大作业-音乐播放器
软件技术系列课程
Android大作业
( 2014 / 2015 学年 第 一 学期)
题目: 音乐播放器的分析与设计
学 生 姓 名 单珺瑜
班 级 学 号 B12041305
指 导 教 师 张怡婷 易磊 许鹏
指 导 单 位 南京邮电大学计算机学院
专 业 软件工程(服务外包)
诚
科技
迈
日 期
一、课题内容和要求
音乐播放器,作为移动设备基础配备软件之一,主要功能包括从SDCard中
读取音乐、显示播放音乐列表、播放音乐、显示音乐歌词、实现上一首、下一
首、暂停、选择播放形式等功能。本论文的音乐播放器采用了Android开源系
统技术,利用Java语言和Eclipse编辑工具对播放器进行编写。同时给出了详
细的系统设计过程、主要界面设计及主要功能运行流程图
二、需求分析
本课题基于Android手机平台上开发的音乐播放器主要设计了四个界面,
包括:欢迎界面,主界面,播放界面和关于界面。每个界面的主要功能为:
欢迎界面为显示App的logo;
主界面利用ListView显示读取SDCard后的App中的全部歌曲列表,通
过滑动屏幕并选择可以实现与我的收藏界面、关于界面的切换,通过点击具体
歌曲可以实现与播放界面的切换;
我的收藏界面利用ListView显示用户收藏的歌曲列表,通过滑动屏幕并
选择可以实现与主界面、关于界面的切换,通过点击具体歌曲可以实现与播放
界面的切换。
播放界面用以显示正在播放的歌曲的歌曲名、歌手、歌词等主要信息,
并设置按钮实现前一曲、后一曲、播放暂停等功能,通过播放形式按钮可以选
择单曲循环、随机播放或者是顺序播放,除此之外,界面下方利用Android自
带seekbar设置的进度条可以根据用户需要调节播放进度;
关于界面用以显示App的主要功能等信息。
三、软件设计
(一)、系统主要功能模块包括:
1、欢迎界面:初始化Intent以实现欢迎界面开始1.5秒之后进入歌单列表
1
界面。
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不发生任何变化
2
f、进度条:利用Android自带的seekbar设置进度条,用户可以根据
进度条来自主控制歌曲播放进度,随意跳转;
g、歌词显示:利用LyricView类完成歌词随着时间滚动显示的功能。
5、关于界面:利用LinearLayout的线性布局及若干个TextView以显示App
主要功能等信息
(二)、App设计简要流程图如下:
Smart Music
欢迎界面
歌单列表
我的收藏
播放控制
歌
词
显
示
歌
曲
播
放
歌
曲
暂
停
播
放
上
一
首
播
放
下
一
首
播
放
模
式
3
随机播放
列表循环
单曲循环
四、软件实现
(一)、开发环境的搭建与配置
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
运行下载好的,按提示一步步走。
6. 测试是否安装成功
安装完成之后,可以用下述方法检查JDK是否安装成功:
打开cmd窗口,输入java -version 。
7. 添加环境变量
操作步骤:
计算机->属性->高级系统设置->环境变量->系统变量->Path->编辑
添加JDK的bin目录的路径。
8. 安装Android SDK
安装Platform
仅仅SDK Tools是不够的,我们至少还需要一个Android平台和最新的
SDK 平台工具。
11.添加环境变量
操作步骤:
4
计算机->属性->高级系统设置->环境变量->系统变量->新建
变量名:ANDROID_SDK_HOME
添加SDK目录的路径。
12. 安装Eclipse,选择工作空间。
13. 配置ADT
(二)、负责的主要功能和代码
1、欢迎界面
欢迎界面为显示App的logo,点开App图标后出现,1.5秒后自动转入列表界
面
public class WelcomeActivity extends
Activity //
定义
WelcomeActivity
类
{
@Override
protected void onCreate(Bundle
savedInstanceState) //Activity
生命周期
{
te(savedInstanceState);
setContentView(ty_welcome);
new Handler().postDelayed(new Runnable() {
@Override
5
public void run() {
Intent intent = new
Intent(,
ss);//
初始化
startActivity(intent);
();
}
},1500);//
欢迎界面开始后
1.5
秒后自动进入列表界
面
}
}
2、关于界面
关于界面用于显示APP的功能、开发者、版本号等主要信息,主要代码如下:
线性布局 xmlns:android="://d/a pk/res/android" android:orientation="vertical"// 垂直 布局 android:layout_width="match_parent "// 设置文本宽度 android:layout_height="match_paren 6 t">// 设置文本高度 android:layout_width="match_parent "// 设置文本宽度 android:layout_height="wrap_content "// 设置文本高度 android:orientation="vertical"// 垂直 布局 android:gravity="center"// 居中 android:background="@drawable/act ionbar_background"> android:layout_width="wrap_content "// 设置文本宽度 android:layout_height="wrap_content "// 设置文本高度 android:textColor="#fff"// 设置文本颜 色 android:text="Welcome to use" android:layout_marginTop="30dp"/> // 设置文本距离顶部距离 7 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_paren t"// 设置文本高度 android:orientation="vertical"// 垂直 布局 android:gravity="center"> 8 android:text="Descriptions" android:layout_width="wrap_content "// 设置文本宽度 android:layout_height="wrap_content "// 设置文本高度 android:textSize="24sp"// 设置文本大 小 android:textColor="#000"// 设置文本 颜色 android:layout_gravity="center_horiz ontal"/> "// 设置文本宽度 android:layout_height="wrap_content "// 设置文本高度 android:layout_margin="20dp"// 设置 文本大小 android:text="@string/description"/> android:layout_width="wrap_content 9 android:layout_width="match_parent "// 设置文本宽度 android:layout_height="wrap_content "// 设置文本高度 android:layout_gravity="center_horiz ontal" 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 10 "// 设置文本高度 android:text="Email Me" android:textSize="24sp"// 设置文本大 小 android:layout_marginTop="20dp"/> // 设置文本距离顶部距离 android:layout_width="wrap_content "// 设置文本宽度 android:layout_height="wrap_content "// 设置文本高度 android:text="panlei106@gmail" 置文本距离顶部距离 android:autoLink="email"/> android:layout_marginTop="10dp" android:layout_width="wrap_content "// 设置文本宽度 android:layout_height="wrap_content "// 设置文本高度 android:text=" 版本号: 1.0" 11 android:layout_marginTop="5dp"// 设 android:textSize="16sp"// 设置文本大 小 android:textColor="#ffba1414"/>// 设 置文本颜色
3、MusicService功能
MusicService用于实现音乐的后台播放功能
public class MusicService//
定义一个
MusicService
类
extends Service {
private MediaPlayer mediaPlayer;
private int position;
private List
private MusicInfo musicInfo;
private int repeatState;
12
private SharedPreferences sharedPreferences;
@Override
public void onCreate()//Service
的生命周期
{
te();
mediaPlayer = new MediaPlayer();//
初始化
ompletionListener(new
MusicPlayCompleteListener());
sharedPreferences =
getSharedPreferences(_DAT
E,MODE_PRIVATE);
//MusicInfo musicInfo =
(position);
//playMusic(musicInfo);
//xt(this,"service
start",_SHORT).show();
}
13
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int
flags, int startId)//Service
生命周期
{
repeatState =
("repeatState",AppC
eat);//
定义歌曲列表
position = Extra("position",0);//
定
义位置变量
editor=
();
("lastPosition",position);
editormit();
Log.i("repeatState---->",repeatState+"");
musicInfoList =
(List)rSequenceArrayListExtra("
14
musicInfoList");
musicInfo = (position);
if (musicInfo != null){
int MSG = Extra("MSG",0);
Log.i("MSG--->",MSG+"");
switch (MSG){
case _PLAY:
playMusic(musicInfo);//
播放音乐
break;
case _PAUSE:
pauseMusic();//
停止音乐
break;
case _NEXT:
playMusic(musicInfo);
pauseMusic();//
播放下一首音乐
break;
case _SEEKTO:
int progress =
Extra("progress",0);
(progress);
continueMusic();//
根据用户要求在进度条中寻
找用户要求进度,再进行播放
15
break;
case _CONTINUE:
continueMusic();//
继续播放音乐
break;
}
}
//playMusic(musicInfo);
Log.i("posituon--->",position+"");
Log.i("musicInfoList--->",ng()
);
return START_NOT_STICKY;
}
@Override
public void onDestroy()//Service
的生命周期
{
roy();
e();
}
public void playMusic(MusicInfo musicInfo) {
();
16
try {
aSource(i
cPath());
e();
();
} catch (Exception e) {
tackTrace();
}
}
public void pauseMusic(){
();
}//
从暂停位置停止播放音乐
public void stopMusic(){
();
}//
从暂停的音乐停止播放音乐
public void
continueMusic(){();}
17
public class MusicPlayCompleteListener
implements
letionListener{
@Override
public void onCompletion(MediaPlayer mp) {
switch (repeatState) {
case eat://
实现列表循环播
放
if (position == () - 1) {
position = 0;
} else {
position += 1;
}
break;
case Repeat://
实现随机
播放
position =
(int)((()-1)*());
break;
case Repeat://
实现单曲循
环播放
break;
18
}
musicInfo = (position);
playMusic(musicInfo);
Intent sendIntent = new
Intent(_VIEW);//
发送
广播
ra("position",position);
editor=
();
("lastPosition",position);
editormit();
sendBroadcast(sendIntent);
//Log.i("broadcast---->","
发送成功
");
}
}
}
五、软件测试
将Android手机用USB与电脑相连,打开Eclipse在项目上右键 --> 运行方式
19
-- > android application 即可以直接运行进行测试。
1、进入界面的测试:
点击App后直接跳转至进入界面,1.5秒后自动跳转至歌单列表界面
2、歌单界面的测试
a、歌单界面用以显示歌曲列表及其歌曲,界面下方显示上次播放的歌曲信
息。
20
b、屏幕左上方为菜单,通过滑动屏幕即可展开菜单列表,可以实现与关于界面
的转换
21
3、我的收藏界面
我的收藏界面用于显示用户收藏的歌曲列表
22
4、播放界面的测试
界面左上角是返回键,点击可以跳转至歌单列表界面;
23
界面上方用以显示歌曲的名称,姓名;
界面中间部分用以显示歌曲的歌词,并随着歌曲进度而滑动,正在演唱的
歌词变红;
歌词下方是进度条,两侧显示歌曲已经播放时间和歌曲总长,用户可以随
意拉动进度条以调整歌曲进度,当进度条到达最后时,自动跳转至下一首;
界面最下方是功能键,依次为:上一首、暂停(播放)、下一首和播放形式,点
击上一首按钮即可跳转至上一首歌曲界面,点击暂停按钮即可歌曲暂停且暂停
按钮变成播放按钮,点击下一首按钮即可跳转至下一首歌曲界面,点击播放形
式按钮可依次改变至随机播放、列表循环和单曲循环,按钮也会依次改变。
5、关于界面的测试
24
关于界面用于显示APP的功能、开发者、版本号等主要信息
六、软件总结
25
本次实验旨在利用JAVA编程,实现音乐播放器的基本功能。这次的软件设
计题目,是非常贴近我们生活实际内容,这一类的应用软件大大的娱乐和方便了
我们的课余生活,但是亲自动手设计一个音乐播放器对我们来说却有一定的难
度。随着我们对于这方面的学习,从最初的需求分析、搜集资料,到中期的代
码编写和检测完善,再到后面的软件演示和文档编写,我们真正学到了不少使
用的技术。
本次实验我们小组三人明确分工,一人专门攻克核心代码,一人负责任务
量较大、难度较轻的次核心代码,一人负责各种UI设计以及较轻松的代码;同
时三人又通力合作,实验初期一起讨论课程的需求分析、共同制定概要设计、
制定分工计划,实验中期针对每个人出现的问题通过交流沟通,找到解决方案,
试验后期共同测试分析,集思广益不断检测完善。小组分工协作,互帮互助,
在完成个人任务的同时通过交流对另外成员的任务也有大致了解,使得每个人
都在有限时间内收获三倍的成长。
对于我个人而言,通过本次实验使得我对于JAVA编程语言的掌握有了实质
性的进步,从基本不了解到基本熟悉的跨越。本次实验区别于以往上机实验的
最主要一点是,本次实验是小组协作共同完成一个完整的App的制作,所以,
除了简单的编程语言的掌握外,我了解到一个完整App的制作流程,了解到团
队协作的重要性,以及如何在一个team扮演好自己的角色同时尽可能的帮助其
他成员。
遗憾的是,由于时间有限、对于JAVA语言掌握有限、对软件功能认识不足
等原因,导致我们一些好的灵感和创意在软件上没有得到实现,如:联网下载
歌曲等,但通过此次实验让我们提高了独立思考的能力,提高了实践动手能力,
增强了团队凝聚力,增强了与人合作的能力等,受益匪浅!
最后还有感谢三位指导老师对我们的悉心指导,感谢小组成员通力协作,
感谢中兴公司与学校给予的机会,虽然最终结果与最初预想有些许差距,但也
鼓励我继续不断进步,争取做出更优秀的作品。
26
版权声明:本文标题:android大作业音乐播放器 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1715655729a463314.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论