软件技术毕业设计论文Android手机音乐播放器.docx

上传人:b****5 文档编号:6778684 上传时间:2023-01-10 格式:DOCX 页数:21 大小:450.62KB
下载 相关 举报
软件技术毕业设计论文Android手机音乐播放器.docx_第1页
第1页 / 共21页
软件技术毕业设计论文Android手机音乐播放器.docx_第2页
第2页 / 共21页
软件技术毕业设计论文Android手机音乐播放器.docx_第3页
第3页 / 共21页
软件技术毕业设计论文Android手机音乐播放器.docx_第4页
第4页 / 共21页
软件技术毕业设计论文Android手机音乐播放器.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

软件技术毕业设计论文Android手机音乐播放器.docx

《软件技术毕业设计论文Android手机音乐播放器.docx》由会员分享,可在线阅读,更多相关《软件技术毕业设计论文Android手机音乐播放器.docx(21页珍藏版)》请在冰豆网上搜索。

软件技术毕业设计论文Android手机音乐播放器.docx

软件技术毕业设计论文Android手机音乐播放器

武汉职业技术学院

毕业设计论文

课程名称:

面向对象课程设计

题目:

Android手机音乐播放器

专业:

软件技术

班级:

软件

姓名:

学号:

指导老师:

2011年12月15日至2011年12月25日

程序设计任务书

设计题目:

手机音乐播放器

设计目的

本课程的设计的目的是通过实践使同学们经历android开发全过程和受到一次综合训练,以便能较全面地理解、掌握和综合运用所学的知识。

结合具体的开发案例,理解并初步掌握系统分析、系统设计、系统实施的主要环节和步骤以及软件文档的制作能力。

要求完成的主要任务:

(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)

主要任务:

1.完成主界面设计

2.选择要播放的文件,构成播放列表

3.实现播放、暂停、结束功能

4.实现音量调节和循环播放选择功能

5.实现后台运行

设计报告撰写格式要求:

大标题:

黑体三号字加粗

小标题:

宋体四号字加粗

正文:

宋体五号字

时间安排:

16周-19周

消化资料、系统调查 1天系统分析1天

总体设计2天实施计划(编写代码)3天

撰写报告 1天演示、验收 1天

具体要求

1、明确课程设计的目的和重要性,认真领会课程设计的题目,学会设计的基本方法与步骤,学会如何运用前修知识与收集、归纳相关资料解决具体问题的方法。

严格要求自己,要独立思考,按时、独立完成课程设计任务。

2、设计报告:

要求层次清楚、整洁规范、不得相互抄袭,凡正文内容有整段完全相同者一律以抄袭论处。

设计报告正文字数不少于0.2万字(不包括附录)

指导教师签字:

年月日

系主任签字:

年月日

1、播放器的主要功能

1、自动查找sd卡中的音乐播放文件,生成播放列表。

2、具有播放,暂停,下一曲,上一曲,循环播放的功能。

3、打接电话时音乐停止,挂掉电话后重新回到播放界面继续播放音乐。

4、可以进行后台播放功能。

5、若新增MP3格式的音乐文件可以自动将该音乐文件添加到播放列表。

2、使用到的相关知识

Android各种页面布局,Android中的MediaPlayer媒体创建,Android中service后台控制播放方法,Intent意图进行Activity之间进行多页面跳转,Button按钮事件监听控制,

3、实现该音乐播放器的整体思路

要实现这个音乐播放器。

首先应该考虑到的就是他的功能,要有后台播放功能以及显示正在播放的文件和把手机中的音乐文件以列表的形式显示在手机上,这就要使用到listview类。

另外在本地歌曲列表和正在播放的歌曲之间要进行动态菜单的跳转故而想到用tabhost这个容器进行布局。

后台播放创建一个类继承service方法,在该类中使其具有播放暂停下一首上一首的功能的方法,从而是它在各个Activity之间进行跳转的时候为其他的类提供相应的方法。

创建一个新建文件类和过滤文件信息的类,用以存贮特定的文件信息和当用户改变文件夹终不改的内容的时候同步更新播放列表。

于接打电话这个问题,创建一个类进行监听,当电话进来或出去的时候调用service方法停止音乐播放并记下播放点。

4、在实现过程遇到的相关问题以及解决的办法

对于刚接触Android开发的我们,在很多的知识点上还是不是很理解,鉴于此在制作的过程难免会遇到各种问题,解决的办法就是通过XX,goolge各种搜索引擎。

1、首先在开始动手构思音乐播放器界面的时候就遇到了难题,要实现动态菜单(本地音乐、正在播放的歌曲);

2、如何实现后台播放;

3、如何进行多页面之间的跳转;

4、如何进行电话监听;

5、如何将sd卡中的MP3音乐文件过滤读取到播放列表中;

6、如何自动添加更新播放列表;

7、对于listview中点击Item时触发相应的播放事件;

5、得到MP3界面图展示

六、具体实现步骤

1、创建main.xml布局文件。

通过tabhost进行布局显示本地播放和正在播放。

实现的主要代码及步骤效果图:

(1)main.xml

android="

android:

layout_width="match_parent"android:

layout_height="match_parent"

android:

id="@android:

id/tabhost">

orientation="vertical"

android:

layout_width="fill_parent"

android:

layout_height="fill_parent"

android:

padding="5dp">

id="@android:

id/tabs"

android:

layout_width="fill_parent"

android:

layout_height="wrap_content"

android:

padding="5dp"/>

id="@android:

id/tabcontent"

android:

layout_width="fill_parent"

android:

layout_height="fill_parent"

android:

padding="5dp"/>

(2)创建TabViewActivity类继承TabActivity类向tabhost容器中加入动态menu以及创建一个music类进行sd卡的音乐文件的存取和读取,创建utilFile进行文件的创建和判断。

在SD卡创建存放MP3的目录代码片段:

publicvoidcreateDirInSDCard()throwsIOException{

if(newFile(FileUtils.MUSIC).exists()==false)

{

Filefile=newFile(MUSIC);

file.mkdir();

}

}

在SD卡上创建文件代码片段:

publicFilecreatFile(StringfileName)throwsIOException{

Filefile=newFile(MUSIC+fileName);

file.createNewFile();

returnfile;

}

/*

*判断文件是否存在

*/

publicbooleanisFileExist(StringfileName){

Filefile=newFile(MUSIC+fileName);

returnfile.exists();

}

向tabhost容器中加入动态菜单项的代码片段:

publicvoidinitializePlayer(){

//因为继承了TabActivity,所以可以用getTabHost()获取TabHost,

tabHost=this.getTabHost();

//设置Intent指向的类

intent=newIntent(this,LocalListActivity.class);

//创建一个tabSpec,并设置它的标签和要跳转到的Intent

tabSpec=tabHost.newTabSpec("local").setIndicator("本地歌曲")

.setContent(intent);

//将tabSpec添加到tabHost(这样就把一个分页的标签添加进去了)

tabHost.addTab(tabSpec);

//添加第二个标签

intent=newIntent(this,PlayingMusicActivity.class);

tabSpec=tabHost.newTabSpec("playingMusic").setIndicator("歌曲播放")

.setContent(intent);

tabHost.addTab(tabSpec);

(3)创建Mp3Info类,定义初始话音乐信息

privatestaticfinallongserialVersionUID=1L;

privateStringid;

privateStringmp3Name;

privateStringauthor;

privateStringlrcName;

privateStringlrcSize;

publicMp3Info()

{

}

publicMp3Info(Stringid,Stringmp3Name,Stringauthor,StringlrcName,

StringlrcSize){

super();

this.id=id;

this.mp3Name=mp3Name;

this.author=author;

this.lrcName=lrcName;

this.lrcSize=lrcSize;

}

publicStringtoString(){

return"Mp3Info[author="+author+",id="+id+",lrcName="

+lrcName+",lrcSize="+lrcSize+",mp3Name="+mp3Name

+"]";

}

publicStringgetId(){

returnid;

}

publicvoidsetId(Stringid){

this.id=id;

}

publicStringgetMp3Name(){

returnmp3Name;

}

publicvoidsetMp3Name(Stringmp3Name){

this.mp3Name=mp3Name;

}

publicStringgetAuthor(){

returnauthor;

}

publicvoidsetAuthor(Stringauthor){

this.author=author;

}

publicStringgetLrcName(){

returnlrcName;

}

publicvoidsetLrcName(StringlrcName){

this.lrcName=lrcName;

}

publicStringgetLrcSize(){

returnlrcSize;

}

publicvoidsetLrcSize(StringlrcSize){

this.lrcSize=lrcSize;

}

}

2、创建playmusic.xml布局文件用以显示播放下一首上一首控制按钮和显示正在播放的音乐文件的名字

具体代码片段:

xmlversion="1.0"encoding="utf-8"?

>

android="

android:

baselineAligned="false"

android:

layout_width="match_parent"

android:

orientation="vertical"

android:

layout_height="wrap_content">

android:

id="@+id/linearLayout1"

android:

layout_width="match_parent"

android:

orientation="vertical"

android:

layout_height="60dip">

android:

text="正在播放歌曲"

android:

id="@+id/textView1"

android:

layout_width="fill_parent"

android:

textSize="10pt"

android:

layout_height="wrap_content">

android:

layout_height="wrap_content"

android:

textSize="10pt"

android:

layout_width="wrap_content"

android:

id="@+id/textView2"

android:

text="TextView">

android:

layout_height="wrap_content"

android:

layout_width="match_parent"

android:

id="@+id/linearLayout2">

android:

layout_height="wrap_content"

android:

text="上一首"

android:

layout_width="wrap_content"

android:

id="@+id/last"

android:

fadeScrollbars="true"

android:

longClickable="true"

android:

textSize="10pt">

android:

layout_height="wrap_content"

android:

id="@+id/pause"

android:

layout_width="wrap_content"

android:

text="暂停"

android:

longClickable="true"

android:

textSize="10pt">

android:

id="@+id/start"

android:

visibility="gone"

android:

layout_width="wrap_content"

android:

text="播放"

android:

textSize="10pt"

android:

layout_height="wrap_content">

android:

text="下一首"

android:

id="@+id/next"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"

android:

longClickable="true"

android:

textSize="10pt">

 

3、创建一个playmusicService类行进后台控制音乐播放功能为Playmusic类用以控制音乐播放功能的方法。

Service代码片段:

publicclassPlayMusicServiceextendsService{

privatestaticMediaPlayermediaPlayer;

privatestaticfinalStringMUSIC_PATH="/sdcard/Music/";

 

//歌曲是否正在播放

publicstaticbooleanisPlaying=false;

//当前播放的歌曲

publicstaticintCURRENT_SONG=0;

//声明一个Bundle对象,用来放置接收到的Bundle对象

Bundlebundle=null;

@Override

publicIBinderonBind(Intentarg0){

//TODOAuto-generatedmethodstub

returnnull;

}

@Override

publicvoidonCreate(){

//TODOAuto-generatedmethodstub

super.onCreate();

//生成MediaPlayer对象

mediaPlayer=newMediaPlayer();

}

@Override

publicvoidonStart(Intentintent,intstartId){

//TODOAuto-generatedmethodstub

super.onStart(intent,startId);

//从接收到的Bundle对象中获取当前播放歌曲的位置

bundle=intent.getExtras();

CURRENT_SONG=bundle.getInt("position");

//条用playMusic()方法播放歌曲

playMusic(CURRENT_SONG);

}

//播放歌曲方法

publicvoidplayMusic(intposition){

try{

//标志为正在播放

isPlaying=true;

//获取将要播放的歌曲的位置

CURRENT_SONG=position;

System.out.println("当前正在播放的歌曲:

"

+LocalListActivity.list.get(CURRENT_SONG).get("mp3Name"));

mediaPlayer.reset();

mediaPlayer.setDataSource(MUSIC_PATH

+LocalListActivity.list.get(CURRENT_SONG).get("mp3Name"));

mediaPlayer.prepare();

mediaPlayer.start();

mediaPlayer.setOnCompletionListener(newOnCompletionListener(){

publicvoidonCompletion(MediaPlayermp){

//TODOAuto-generatedmethodstub

/*

*播放当前歌曲的下一首判断播放的是否最后一首歌,如果是,播放完返回播放第一首

*/

if(++CURRENT_SONG>=LocalListActivity.list.size()){

CURRENT_SONG=0;

}

playMusic(CURRENT_SONG);

//动态更新正在播放歌曲的名字

newPlayingMusicActivity().updatePlaySongName(CURRENT_SONG);

}

});

}catch(Exceptione){

e.printStackTrace();

}

}

//播放上一首歌曲

publicvoidlastMusic(intposition){

//先把MediaPlayer对象切换到stoped状态

if(mediaPlayer!

=null){

if(isPlaying){

mediaPlayer.stop();

CURRENT_SONG=position;

if(CURRENT_SONG<0){

//如果当前播放的是第一首歌,则切换到最后一首

CURRENT_SONG=LocalListActivity.list.size()-1;

}

playMusic(CURRENT_SONG);

}

}

}

//播放下一首歌曲

publicvoidnextMusic(intposition){

//先把MediaPlayer对象切换到stoped状态

if(mediaPlayer!

=null){

if(isPlaying)

{

mediaPlayer.stop();

CURRENT_SONG=position;

//如果播放的是最后一首歌曲,则切换到第一首

if(CURRENT_SONG==(LocalListActivity.list.size())){

CURRENT_SONG=0;

}

playMusic(CURRENT_SONG);

}

}

}

//暂停/恢复播放

publicvoidpauseMusic(){

if(mediaPlayer!

=null){

if(isPlaying==true){

mediaPlayer.pause();

isPlaying=false;

}

}

}

/*

*恢复播放歌曲

*/

publicvoidstartMusic(){

if(mediaPlayer!

=null){

if(isPlaying==false){

mediaPlayer.start();

isPlaying=true;

}

}

创建playmusic类中在textview中进行显示显示正在播放的音乐文件名代码片段:

protectedvoidonResume(){

//TODOAuto-generatedmethodstub

super.onResume();

//TextView对象,设置正在播放的歌曲的名字

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

当前位置:首页 > 法律文书 > 调解书

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

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