本科毕业设计论文基于android普通的音乐播放器的设计与实训软件技术.docx
《本科毕业设计论文基于android普通的音乐播放器的设计与实训软件技术.docx》由会员分享,可在线阅读,更多相关《本科毕业设计论文基于android普通的音乐播放器的设计与实训软件技术.docx(37页珍藏版)》请在冰豆网上搜索。
本科毕业设计论文基于android普通的音乐播放器的设计与实训软件技术
编号
xxx信息职业技术学院
毕业论文
题目
基于Android普通的音乐播放器的设计与实训
学生姓名
xx
学号
xxx
院系
计算机与通信工程学院
专业
软件技术
班级
xx
指导教师
xx
顾问教师
二〇一六年六月
摘要
本音乐播放器的开发的原因是,在当今大众娱乐的时代,音乐播放器已是越来越不可少,开发这个项目可以方便很多人。
Android当前发展前景很不错,特别是在中国市场,中国智能手机用户花钱购买应用程序的意识淡薄,安卓主打免费和开放式系统,适合广大人群,安全系数一般,虽然没有IOS那样稳定易用,但开发前景仍然可观。
随着社会的进步发展,人们生活水平的稳健提高,越来越多的人们开始对娱乐生活有着各种各样的需求,其中,音乐以其独特的律动和韵味捕获了大多数人们的心。
在这样的时代中,音乐播放器的使用也显得格外的讲究。
本音乐播放器为满足广大用户对音乐体验的快感,结合了主流播放器的基本功能,并大胆创新,只为给广大用户带来极致的音乐享受。
本音乐播放器基本实现了现如今主流音乐播放器的基本功能,基本符合大众对音乐播放器的需求。
除此以外,本播放器还提供了下载功能以及波形图,左右声道等新鲜功能。
满足各类用户的需求,带来前所未有的体验感。
关键词1.android2.音乐播放器3.下载功能
Abstract
Thereasonforthedevelopmentofthemusicplayeristhatintheeraofmassentertainment,musicplayerisbecomingmoreandmoreindispensable,thedevelopmentofthisprojectcanbeconvenientformanypeople.Androidiscurrentlythedevelopmentprospectsareverygood,especiallyintheChinesemarket,Chinesesmartphoneusersspendmoneytobuyapplicationconsciousness,Androidmainfreeandopensystem,suitableforthemajorityofthepopulation,thefactorofsafetyingeneral,althoughthereisnoIOSasstableandeasytouse,buttheprospectsarestillimpressive.
Withthesocialprogressanddevelopment,people'slivingstandardsimprovetherobustnessofthe,moreandmorepeoplebegantohaveavarietyofdemandforliveentertainment,includingmusic,withitsuniquerhythmandcharmcapturetheheartofmostpeople.Insuchanera,theuseofmusicplayersalsoappearstobeparticularlystress.
Themusicplayertomeetthemajorityofusersofthemusicexperienceofpleasure,combinedwiththebasicfeaturesofthemainstreamplayer,andboldinnovation,onlyforthemajorityofuserstobringtheultimatemusictoenjoy.
Thebasicrealizationofthemusicplayerisnowthemainstreammusicplayer'sbasicfunctions,basicallyinlinewiththeneedsofthepublicmusicplayer.Inaddition,theplayeralsoprovidesdownloadfeaturesaswellasthewaveform,theleftandrightchannels,andothernewfeatures.Meettheneedsofallkindsofusers,bringanunprecedentedsenseofexperience.
Keywords:
1.android2.musicplayer3.Downloadfunction
目录
摘要I
AbstractII
第一章绪论1
1.功能设计1
1.1.1主界面音乐播放管理1
1.1.2通知栏音乐播放管理1
1.1.3音乐列表管理1
1.1.4设置管理1
1.1.5双声道管理1
2.本论文的内容和结构说明1
第二章系统设计3
2.1系统面向对象设计3
2.2数据库设计3
2.3主界面设计4
第三章系统实现5
3.1数据库存储系统的实现5
3.2系统功能实现5
3.2.1音乐信息添加功能的实现5
3.2.2音乐列表更改功能的实现6
3.2.3服务器音乐下载功能的实现7
3.2.4设置功能的实现9
3.2.5“关于”实现12
3.2.6通知栏音乐播放控制功能的实现13
3.2.7双声道和波形功能的实现14
第四章软件系统测试17
4.1测试目的17
4.2测试对象及测试范围17
第五章总结与展望18
致谢19
参考文献20
附录项目类表21
第1章绪论
1.功能设计
1.1.1主界面音乐播放管理
通过该模块,用户可以实现对音乐播放的管理,主要功能包括:
a.播放/暂停:
用户可以通过此功能对音乐实施播放或暂停控制。
b.上一首:
用户可以通过此功能切换音乐至上一首。
c.下一首:
用户可以通过此功能切换音乐至下一首。
d.播放模式:
用户可以通过此功能调节播放模式,包括顺序播放、循环播放和随机播放。
e.进度条拖动:
用户可以通过此功能调节音乐的播放进度。
1.1.2通知栏音乐播放管理
a.播放/暂停:
用户可以通过此功能对音乐实施播放或暂停控制。
b.上一首:
用户可以通过此功能切换音乐至上一首。
c.下一首:
用户可以通过此功能切换音乐至下一首。
d.关闭:
用户可以通过此功能直接关闭播放器。
e.跳转:
用户可以通过此功能从通知栏跳转至主界面。
1.1.3音乐列表管理
a.默认列表:
用户打开列表自动搜索内存里的音乐,并导入默认列表。
用户可通过此列表进行选择播放。
b.喜欢列表:
用户通过在默认列表中的选择,将喜欢的音乐导入喜欢列表。
用户可通过此列表进行选择播放。
c.下载列表:
用户可通过网络下载喜欢的音乐至此列表,并进行选择播放。
1.1.4设置管理
a.背景设置:
用户可通过此功能更换界面背景。
b.搞怪3D音效:
用户可通过此功能获取搞怪音效。
c.语言设置:
用户可通过此功能来进行中英文切换。
1.1.5双声道管理
a.用户如果没有插入耳机,则出现波形图。
b.用户如果插入耳机,则进行双声道管理。
2.本论文的内容和结构说明
软件设计采用IARC语言软件开发系统,通过系统通讯主程序、路由子程序、传感器信号采集处理子程序、显示报警子程序等模块化软件设计,设计出使用简便、运行效率高、稳定可靠的配套软件系统。
本文结构主要由绪论、音乐播放器的构成与组建、系统模块的介绍,流程图和关键代码实现。
第1章:
绪论,介绍音乐播放器的功能设计。
第2章:
系统设计,系统总体分析与设计,总体介绍项目的构成。
第3章:
系统实现的原理。
第4章:
系统测试。
第5章:
对项目的以后的展望和。
系统顶层用例图如图1:
图1系统用例图
第二章系统设计
2.1系统面向对象设计
根据系统的需求分析,各功能模块所涉及的类如下:
音乐列表类:
功能:
修改音乐类型信息,比如添加音乐数据、查询所有未被删除的音乐信息、添加删除喜欢音乐。
属性:
存储音乐类型信息,比如默认音乐类型有歌曲ID、名称、专辑名、歌手名、路径、播放时长、大小、重命名歌曲名等。
音乐列表类图如图2.1
图2.1音乐列表类图
2.2数据库设计
系统采用SQLite关系型数据库进行数据库设计,由系统对象关系分析可知,系统数据存储结构可由一张数据表构成,其具体结构如表1所示。
表1音乐类型信息表
表名
account_type_info
列名
数据类型
非空
描述
主键
外键
id
integer
Y
歌曲ID
Y
title
text
歌曲的名称
album
text
歌曲的专辑名
artist
text
歌曲的歌手名
url
text
歌曲文件的路径
duration
text
歌曲的总播放时长
musicname
text
重命名歌曲名
size
text
歌曲文件的大小
status
integer
1标识不喜欢,2标识喜欢
2.3主界面设计
由于采用移动手持终端作为应用程序载体,为提高人机交互效果,主界面宜采用扁平化设计。
可以更加简单直接的将信息和事物的工作方式展示出来,减少认知障碍的产生。
主界面设计如图3.4所示。
图2.3主界面设计
第三章系统实现
3.1数据库存储系统的实现
本存储系统利用Andorid的SQLite关系型数据库存储系统实现。
其数据表字段及数据表创建等核心代码如下所示:
数据表字段代码:
privateSQLiteDatabasemMusicListdb=null;
privatefinalStringLIST_DBNAME="music_list";
privatefinalStringTBL_MUSIC="tbl_music";
privatefinalStringTITLE="tilte";
privatefinalStringALBUM="album";
privatefinalStringARTIST="artist";
privatefinalStringURL="url";
privatefinalStringDURATION="duration";
privatefinalStringSIZE="size";
privatefinalStringMUSICNAME="musicname";
privatefinalStringSTATUS="status";
3.2系统功能实现
本音乐播放系统通过播放、音效、设置、关于、通知等其他系统共同实现。
主界面以下功能:
播放、列表、设置、关于。
1.播放:
音乐的播放控制;
2.列表:
音乐列表显示和更改;
3.设置:
更改背景、语言设置和3D音效;
4.双声道和波形;
5.关于;
6.通知栏音乐播放管理。
3.2.1音乐信息添加功能的实现
该功能主要是音乐信息的添加,点击主界面的列表按钮,打开音乐默认列表自动添音乐(如图3.1所示)。
弹出等待提示框(如图3.2所示),音乐添加完成后将自动关闭并刷新列表。
图3.1音乐信息添加
图3.2等待提示框
添加音乐数据访问层(MusicListDao类)核心代码:
publicvoidinitData(SdcardMusicsm){
ContentValuescv=newContentValues();
cv.put(TITLE,sm.getTilte());
cv.put(ALBUM,sm.getAlbum());
cv.put(ARTIST,sm.getArtist());
cv.put(URL,sm.getUrl());
cv.put(DURATION,sm.getDuration());
cv.put(SIZE,sm.getSize());
cv.put(MUSICNAME,sm.getMusicname());
cv.put(STATUS,"1");
mMusicListdb.insert(TBL_MUSIC,"novalue",cv);
mMusicListdb.close();
添加音乐信息事件核心代码:
if(newMusicListDao(view.getContext()).findAllMusic().isEmpty()){
if(newMusicListDao(view.getContext()).findAllMusic().isEmpty()){
showLoadDialog(false);
newThread(){
publicvoidrun(){
Vectorals=newVector();
als=CommonUtils.getMusicFromSdCard(view.getContext());
for(inti=0;iif(als.elementAt(i).getDuration()>30000){
newMusicListDao(view.getContext()).initData(als.elementAt(i));
}
}
hand.sendEmptyMessage(0);
};
}.start();
}
}else{
Toast.makeText(view.getContext(),R.string.application_no_music,Toast.LENGTH_SHORT).show();
}
}
3.2.2音乐列表更改功能的实现
该功能主要是负责音乐列表的查询和修改,点击默认列表界面的钻石图标,可将该音乐添加至我喜欢的音乐列表(如图3.3所示),选择右侧黄色标签可查看不同列表(如图3.4所示)。
图3.3添加至喜欢的音乐列表
图3.4查看不同的音乐列表
查询音乐信息数据访问层(MusicListDao类)核心代码
publicVectorfindAllMusic(){
Vectorvsm=newVector();
Cursorc=mMusicListdb.rawQuery("select*from"+TBL_MUSIC+"where"+STATUS+"<>?
",newString[]{"0"});
c.moveToFirst();
while(!
c.isAfterLast()){
SdcardMusicsm=newSdcardMusic();
sm.setId(c.getInt(0));
sm.setTilte(c.getString
(1));
sm.setAlbum(c.getString
(2));
sm.setArtist(c.getString(3));
sm.setUrl(c.getString(4));
sm.setDuration(c.getInt(5));
sm.setSize(c.getInt(6));
sm.setMusicname(c.getString(6));
sm.setStatus(c.getInt(8));
vsm.addElement(sm);
c.moveToNext();
}
returnvsm;
}
3.2.3服务器音乐下载功能的实现
点击列表内的下载按钮可从服务器下载该音乐至本地(如图3.5所示)。
等待下载完成后即可播放(如图3.6所示)。
图3.5下载音乐至本地
图3.6下载完成
客户端连接接收代码
publicstaticStringIP="192.168.191.2";
publicstaticintPORT=5000;
publicstaticStringmusic_title="YourSmile.mp3";
publicbooleanconnect(){
newThread(){
publicvoidrun(){
try{
while(true){
Socketsocket=newSocket(IP,PORT);
Stringlocal_file=Environment.getExternalStorageDirectory().getAbsolutePath()+"/AdownloadMusic/";
Filef=newFile(local_file);
if(!
f.exists()){
f.mkdirs();
}
local_file=f.getAbsolutePath()+"/"+music_title;
Filefile=newFile(local_file);
InputStreamins=socket.getInputStream();
FileOutputStreamfos=newFileOutputStream(file);
BufferedInputStreambis=newBufferedInputStream(ins);
BufferedOutputStreambos=newBufferedOutputStream(fos);
byte[]buffer=newbyte[102400];
intlen=bis.read(buffer);
while(len!
=-1){
bos.write(buffer,0,len);
len=bis.read(buffer);
}
fos.flush();
fos.close();
FileReaderfr=newFileReader(file);
Stringstr="";
intval=ins.read(buffer);
val=fr.read();
while(val!
=-1){
str+=(char)val;
val=fr.read();
}
CommonData.downloading=0;
CommonData.handler_deletemusic.sendEmptyMessage
(2);
}
}catch(Exceptione){
CommonData.downloading=0;
CommonData.handler_deletemusic.sendEmptyMessage(3);
}
};
}.start();
returnfalse;
}
服务端创建服务传输代码
publicstaticvoidmain(String[]args){
Filefile=newFile("YourSmile.mp3");
try{
ServerSocketsocketServerSocket=newServerSocket(5000,1,InetAddress.getByName("172.17.0.82"));
while(true){
Socketsocket=socketServerSocket.accept();
try{
OutputStreamops=socket.getOutputStream();
BufferedOutputStreambos=newBufferedOutputStream(ops);
BufferedInputStreambis=newBufferedInputStream(newFileInputStream(file));
byte[]buffer=newbyte[102400];
intlen=bis.read(buffer);
while(len!
=-1){
bos.write(buffer,0,len);
len=bis.read(buffer);
}
bos.flush();
bos.close();
ops.flush();
ops.close();
System.out.println("ok!
");
Thread.sleep(1000);
}catch(Exceptione){
e.printStackTrace();
}
}
}catch(Exceptione){
e.printStackTrace();
}
}
3.2.4设置功能的实现
点击主界面的设置按钮即可调出设置菜单(如图3.7);点击背景设置按钮弹出背景选择界面长按即可设置成功(如图3.8);
图3.7设置菜单查看
图3.8背景设置成功
背景设置关键代码
publicclassImageAdapterextendsBaseAdapter{
privatei