基于android普通的音乐播放器的设计与实训软件技术.docx

上传人:b****4 文档编号:26959977 上传时间:2023-06-24 格式:DOCX 页数:36 大小:725.30KB
下载 相关 举报
基于android普通的音乐播放器的设计与实训软件技术.docx_第1页
第1页 / 共36页
基于android普通的音乐播放器的设计与实训软件技术.docx_第2页
第2页 / 共36页
基于android普通的音乐播放器的设计与实训软件技术.docx_第3页
第3页 / 共36页
基于android普通的音乐播放器的设计与实训软件技术.docx_第4页
第4页 / 共36页
基于android普通的音乐播放器的设计与实训软件技术.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

基于android普通的音乐播放器的设计与实训软件技术.docx

《基于android普通的音乐播放器的设计与实训软件技术.docx》由会员分享,可在线阅读,更多相关《基于android普通的音乐播放器的设计与实训软件技术.docx(36页珍藏版)》请在冰豆网上搜索。

基于android普通的音乐播放器的设计与实训软件技术.docx

基于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

 

第一章绪论

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;i

if(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{

privateintmGalleryItemBackground;

privateContextcontext;

publicImageAdapter(Contextcontext){

this.context=context;

TypedArraytypedArray=context.obtainStyledAttributes(R.styleable.Gallery);

mGalleryItemBackground=typedArray.getResourceId(R.styleable.Gallery_android_galleryItemBackground,0);

typedArray.recycle();

}

@Override

publicintgetCount(){

returnmyImageIds.size();

}

@Override

publicObjectgetItem(intposition){

returnp

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

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1