安卓音乐播放器Word文档格式.docx

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

安卓音乐播放器Word文档格式.docx

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

安卓音乐播放器Word文档格式.docx

2.1.1播放器的用例图

假设安装了音乐播放器的用户是系统的主要设计对象,其拥有以下操作,启动软件、播放音乐、暂停播放、停止播放、退出软件,其用例图如下

图2.1播放器基本用例图

2.1.2用例分析

用例名称:

启动软件

参与者:

用户

目标:

使得用户启动软件并加载手机和sd卡上的音频文件到播放列表

前置条件:

基本事件流:

1.用户启动软件

2.播放器将播放列表中的当前的歌曲

播放

使得用户可以播放在播放列表中选中的歌曲

播放器正在运行

1.用户单击“播放”按钮

暂停

使得用户可以暂停正在播放的歌曲

歌曲正在播放且未停止和暂停

1.用户单击“暂停”按钮

2.播放器将暂停当前的歌曲

停止

使得用户可以停止正在播放的歌曲

歌曲正在播放或暂停

1.用户单击“停止”按钮

2.播放器将停止当前播放的歌曲

退出

使得用户退出或者后台播放音乐

程序在运行

1.用户按返回键

2.播放器退出或者进入后台播放

3.概要设计

3.1软件播放流程图

Step1.启动软件后,软件自动检索手机和sd卡的音频文件,并组织显示成列表.

Step2.点击列表的歌曲名字。

Step3.播放音乐。

Step4.点击暂停,音乐暂停

Step5.点击播放转到step3

Step6.点击停止停止播放音乐

Step7.点击退出。

图3.1音乐播放器流程图

4.界面展示

4.1软件部署

系统编译生成apk文件,将apk文件拷到手机或者sd卡中,直接打开即可安装。

4.2启动软件

打开软件后的界面

4.3歌曲列表界面

歌曲列表界面

4.4播放界面

5.部分源代码

以下给出功能实现代码,布局,风格等代码量过大,放在压缩文件中

文件夹显示文件如图所示

播放器页面布局

Main.xml代码如下<

LinearLayoutxmlns:

android="

schemas.android./apk/res/android"

android:

orientation="

vertical"

layout_width="

fill_parent"

layout_height="

background="

drawable/tupian"

>

<

ListView

id="

+id/android:

list"

200dip"

layout_weight="

1"

drawSelectorOnTop="

false"

/>

SeekBar

+id/SeekBar01"

wrap_content"

max="

100"

progress="

0"

secondaryProgress="

visibility="

visible"

TextView

+id/currentProgress"

layout_y="

300dp"

+id/curtimeandtotaltime"

LinearLayout

horizontal"

ImageButton

+id/front_button"

layout_marginLeft="

10dip"

drawable/first1"

+id/stop_button"

drawable/stop1"

+id/start_button"

drawable/start1"

+id/pause_button"

drawable/pose1"

+id/next_button"

drawable/next1"

/LinearLayout>

<

MainActivity.Java代码如下

importjava.io.File;

importjava.io.FilenameFilter;

importjava.io.IOException;

importjava.util.ArrayList;

importjava.util.List;

importandroid.app.ListActivity;

importandroid.graphics.Color;

importandroid.graphics.drawable.GradientDrawable;

importandroid.graphics.drawable.GradientDrawable.Orientation;

importandroid.media.MediaPlayer;

importandroid.media.MediaPlayer.OnCompletionListener;

importandroid.os.Bundle;

importandroid.os.Handler;

importandroid.view.KeyEvent;

importandroid.view.View;

importandroid.view.View.OnClickListener;

importandroid.widget.ArrayAdapter;

importandroid.widget.ImageButton;

importandroid.widget.ListView;

importandroid.widget.SeekBar;

importandroid.widget.SeekBar.OnSeekBarChangeListener;

importandroid.widget.TextView;

publicclassMainActivityextendsListActivity{

privateImageButtonmFrontImageButton=null;

privateImageButtonmStopImageButton=null;

privateImageButtonmStartImageButton=null;

privateImageButtonmPauseImageButton=null;

privateImageButtonmNextImageButton=null;

/*定义进度handler,显示百分比进度*/

HandlermPercentHandler=newHandler();

privateSeekBarmSeekBar=null;

privateTextViewcurProgressText=null;

privateTextViewcurtimeAndTotaltime=null;

publicMediaPlayermMediaPlayer;

privateList<

String>

mMusicList=newArrayList<

();

privateintcurrentListItem=0;

privatestaticfinalStringMUSIC_PATH=newString("

/sdcard/"

);

Override

publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

musicList();

mMediaPlayer=newMediaPlayer();

initmFrontMusic();

initStopMusic();

initStartMusic();

initPauseMusic();

initNextMusic();

initSeekBar();

}

publicvoidinitmFrontMusic()

{

mFrontImageButton=(ImageButton)findViewById(R.id.front_button);

mFrontImageButton.setOnClickListener(newOnClickListener(){

publicvoidonClick(Viewarg0){

if(--currentListItem>

=0){

currentListItem=mMusicList.size();

}else{

playMusic(MUSIC_PATH+mMusicList.get(currentListItem));

}

}

});

publicvoidinitStopMusic()

mStopImageButton=(ImageButton)findViewById(R.id.stop_button);

mStopImageButton.setOnClickListener(newOnClickListener(){

if(mMediaPlayer.isPlaying())

{

mMediaPlayer.reset();

}

publicvoidinitStartMusic()

mStartImageButton=(ImageButton)findViewById(R.id.start_button);

mStartImageButton.setOnClickListener(newOnClickListener(){

playMusic(MUSIC_PATH+mMusicList.get(currentListItem));

startSeekBarUpdate();

publicvoidinitPauseMusic()

mPauseImageButton=(ImageButton)findViewById(R.id.pause_button);

mPauseImageButton.setOnClickListener(newOnClickListener(){

if(mMediaPlayer.isPlaying()){

mMediaPlayer.pause();

else{

mMediaPlayer.start();

publicvoidinitNextMusic()

mNextImageButton=(ImageButton)findViewById(R.id.next_button);

mNextImageButton.setOnClickListener(newOnClickListener(){

nextMusic();

publicvoidinitSeekBar()

/*初始化拖动条和当前进度显示值*/

mSeekBar=(SeekBar)findViewById(R.id.SeekBar01);

curProgressText=(TextView)findViewById(R.id.currentProgress);

curtimeAndTotaltime=(TextView)findViewById(R.id.curtimeandtotaltime);

mSeekBar.setOnSeekBarChangeListener(newOnSeekBarChangeListener(){

publicvoidonProgressChanged(SeekBarseekBar,intprogress,

booleanfromUser){

/*如果拖动进度发生改变,则显示当前进度值*/

curProgressText.setText("

当前进度:

"

+progress);

publicvoidonStartTrackingTouch(SeekBararg0){

拖动中..."

publicvoidonStopTrackingTouch(SeekBararg0){

intdest=mSeekBar.getProgress();

intmMax=mMediaPlayer.getDuration();

intsMax=mSeekBar.getMax();

mMediaPlayer.seekTo(mMax*dest/sMax);

privatevoidplayMusic(Stringpath)

try{

mMediaPlayer.reset();

mMediaPlayer.setDataSource(path);

mMediaPlayer.prepare();

mMediaPlayer.start();

mMediaPlayer.setOnCompletionListener(newOnCompletionListener(){

publicvoidonCompletion(MediaPlayerarg0){

nextMusic();

});

}catch(IOExceptione){

e.printStackTrace();

privatevoidnextMusic()

if(++currentListItem>

=mMusicList.size())

{

currentListItem=0;

else

publicbooleanonKeyDown(intkeyCode,KeyEventevent){

if(keyCode==KeyEvent.KEYCODE_BACK){

mMediaPlayer.stop();

mMediaPlayer.release();

returnsuper.onKeyDown(keyCode,event);

protectedvoidonListItemClick(ListViewl,Viewv,intposition,longid){

currentListItem=position;

playMusic(MUSIC_PATH+mMusicList.get(position));

super.onListItemClick(l,v,position,id);

//播放列表

publicvoidmusicList()

Filehome=newFile(MUSIC_PATH);

if(home.listFiles(newMusicFilter()).length>

0)

for(Filefile:

home.listFiles(newMusicFilter()))

{

mMusicList.add(file.getName());

ArrayAdapter<

musicList=newArrayAdapter<

(MainActivity.this,R.layout.musicitem,mMusicList);

setListAdapter(musicList);

/*更新拖动条进度*/

publicvoidstartSeekBarUpdate(){

mPercentHandler.post(start);

Runnablestart=newRunnable(){

publicvoidrun(){

//用一个handler更新SeekBar

mPercentHandler.post(updatesb);

};

Runnableupdatesb=newRunnable(){

publicvoidrun(){

intposition=mMediaPlayer.getCurrentPosition();

intmMax=mMediaPlayer.getDuration();

ints

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

当前位置:首页 > IT计算机 > 计算机软件及应用

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

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