音乐播放器.docx
《音乐播放器.docx》由会员分享,可在线阅读,更多相关《音乐播放器.docx(13页珍藏版)》请在冰点文库上搜索。
![音乐播放器.docx](https://file1.bingdoc.com/fileroot1/2023-5/4/b52b911f-5990-4dc8-815c-0b772cb6f90e/b52b911f-5990-4dc8-815c-0b772cb6f90e1.gif)
音乐播放器
应用名称:
简易音乐播放器
实现功能:
开始播放,暂停播放,停止播放,播放下一首,播放上一首,拖动条拖动任意位置播放,播放开始后用拖动条显示播放进度,显示一首歌的需要播放时间和当前播放到什么时间。
歌曲添加:
使用DDMS上传到代码中设置的播放路径中。
最终实现后效果图:
picture1
picture2
设计及实现代码:
1.Mp3Player.java 文件
packagecom.jacky.multimedia;
importjava.io.File;
importjava.io.FilenameFilter;
importjava.io.IOException;
importjava.util.ArrayList;
importjava.util.List;
importandroid.app.ListActivity;
importandroid.media.MediaPlayer;
importandroid.media.MediaPlayer.OnCompletionListener;
importandroid.os.Bundle;
importandroid.os.Handler;
importandroid.view.KeyEvent;
importandroid.view.View;
importandroid.widget.ArrayAdapter;
importandroid.widget.ImageButton;
importandroid.widget.ListView;
importandroid.widget.SeekBar;
importandroid.widget.SeekBar.OnSeekBarChangeListener;
importandroid.widget.TextView;
publicclassMp3PlayerextendsListActivity{
/**Calledwhentheactivityisfirstcreated.*/
/*定义5个图像按钮*/
privateImageButton mFrontImageButton =null;
privateImageButton mStartImageButton =null;
privateImageButton mPauseImageButton =null;
privateImageButton mStopImageButton =null;
privateImageButton mNextImageButton =null;
/*定义进度handler,显示百分比进度*/
HandlermPercentHandler=newHandler();
/*定义拖动条*/
privateSeekBar mSeekBar=null;
/*定义显示文本框*/
privateTextViewcurProgressText=null;
privateTextViewcurtimeAndTotaltime=null;
/*定于一个多媒体对象*/
publicMediaPlayer mMediaPlayer =null;
/*定于一个数据播放列表,用来存放从指定文件中搜索到的文件*/
privateListmMusicList=newArrayList();
/*定义在播放列表中的当前选择项*/
privateintcurrentListItme=0;
/*定义要播放的文件夹路径*/
privatestaticfinalStringMUSIC_PATH=newString("/mnt/sdcard/");
/**Calledwhentheactivityisfirstcreated.*/
@Override
publicvoidonCreate(BundlesavedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
/*更新播放列表*/
musicList();
/*初始化多媒体对象*/
mMediaPlayer =newMediaPlayer();
/*初始化图像按钮*/
mFrontImageButton=(ImageButton)findViewById(R.id.LastImageButton);
mStopImageButton= (ImageButton)findViewById(R.id.StopImageButton);
mStartImageButton=(ImageButton)findViewById(R.id.StartImageButton);
mPauseImageButton=(ImageButton)findViewById(R.id.PauseImageButton);
mNextImageButton=(ImageButton)findViewById(R.id.NextImageButton);
/*初始化拖动条和当前进度显示值*/
mSeekBar=(SeekBar)findViewById(R.id.SeekBar01);
curProgressText=(TextView)findViewById(R.id.currentProgress);
curtimeAndTotaltime=(TextView)findViewById(R.id.curtimeandtotaltime);
/*监听停止按钮*/
mStopImageButton.setOnClickListener(newImageButton.OnClickListener()
{
@Override
publicvoidonClick(Viewv)
{
/*判断是否正在播放歌曲*/
if(mMediaPlayer.isPlaying())
{
/*如果在播放歌曲时,按下开始按钮,则重开开始播放*/
mMediaPlayer.reset();
}
}
});
/*监听开始按钮*/
mStartImageButton.setOnClickListener(newImageButton.OnClickListener()
{
@Override
publicvoidonClick(Viewv)
{ /*播放当前选择歌曲,通过listView列表中onListItemClick方法得到选择的时第几项*/
playMusic(MUSIC_PATH+mMusicList.get(currentListItme));
/*开始播放歌曲时,同步进行更新拖动条进度*/
startSeekBarUpdate();
}
});
/*监听暂停按钮*/
mPauseImageButton.setOnClickListener(newImageButton.OnClickListener()
{
publicvoidonClick(Viewview)
{
if(mMediaPlayer.isPlaying())
{
/*如果有播放歌曲,暂停*/
mMediaPlayer.pause();
}
else
{
/*如果没有播放歌曲,则开始播放*/
mMediaPlayer.start();
}
}
});
/*监听下一首按钮*/
mNextImageButton.setOnClickListener(newImageButton.OnClickListener()
{
@Override
publicvoidonClick(Viewarg0)
{
nextMusic();
}
});
/*监听上一首按钮*/
mFrontImageButton.setOnClickListener(newImageButton.OnClickListener()
{
@Override
publicvoidonClick(Viewarg0)
{
FrontMusic();
}
});
/*监听拖动条*/
mSeekBar.setOnSeekBarChangeListener(newOnSeekBarChangeListener()
{
publicvoidonProgressChanged(SeekBarseekBar,intprogress,
booleanfromUser){
//TODOAuto-generatedmethodstub
/*如果拖动进度发生改变,则显示当前进度值*/
curProgressText.setText("当前进度:
"+progress);
}
@Override
publicvoidonStartTrackingTouch(SeekBarseekBar){
//TODOAuto-generatedmethodstub
curProgressText.setText("拖动中...");
}
@Override
publicvoidonStopTrackingTouch(SeekBarseekBar){
//TODOAuto-generatedmethodstub
intdest=seekBar.getProgress();
intmMax=mMediaPlayer.getDuration();
intsMax=mSeekBar.getMax();
mMediaPlayer.seekTo(mMax*dest/sMax);
}
}
);
}
/*按键处理时间,当按下返回按键时的处理方法*/
publicbooleanonKeyDown(intkeyCode,KeyEventevent)
{
if(keyCode== KeyEvent.KEYCODE_BACK)
{
mMediaPlayer.stop();
mMediaPlayer.release();
this.finish();
returntrue;
}
returnsuper.onKeyDown(keyCode,event);
}
/*ListView选择项监听方法,即当前鼠标在列表中选择的第几项*/
protectedvoidonListItemClick(ListViewl,Viewv,intposition,longid)
{
currentListItme=position;
playMusic(MUSIC_PATH+mMusicList.get(position));
}
/*更新播放列表*/
publicvoidmusicList()
{
/*从指定的路径中读取文件,并与播放列表关联*/
Filehome=newFile(MUSIC_PATH);
/*读取指定类型的文件,在本程序,指定播放类型为mp3*/
if(home.listFiles(newMusicFilter()).length>0)
{
/*读取文件*/
for(Filefile:
home.listFiles(newMusicFilter()))
{
mMusicList.add(file.getName());
}
/*播放文件与播放列表关联*/
ArrayAdaptermusicList=newArrayAdapter(Mp3Player.this,R.layout.musicitme,mMusicList);
setListAdapter(musicList);
}
}
/*播放指定路径中的音乐*/
privatevoidplayMusic(Stringpath)
{
try
{
/*重置多媒体*/
mMediaPlayer.reset();
/*读取mp3文件*/
mMediaPlayer.setDataSource(path);
/*准备播放*/
mMediaPlayer.prepare();
/*开始播放*/
mMediaPlayer.start();
/*监听播放是否完成*/
mMediaPlayer.setOnCompletionListener(newOnCompletionListener()
{
publicvoidonCompletion(MediaPlayerarg0)
{
/*播放完当前歌曲,自动播放下一首*/
nextMusic();
}
});
}catch(IOExceptione){}
}
/*播放下一首*/
privatevoidnextMusic()
{
if(++currentListItme>=mMusicList.size())
{
currentListItme=0;
}
else
{
playMusic(MUSIC_PATH+mMusicList.get(currentListItme));
}
}
/*播放上一首歌曲*/
privatevoidFrontMusic()
{
if(--currentListItme>=0)
{
currentListItme=0;
}
else
{
playMusic(MUSIC_PATH+mMusicList.get(currentListItme));
}
}
/*更新拖动条进度*/
publicvoidstartSeekBarUpdate()
{
mPercentHandler.post(start);
}
Runnablestart=newRunnable(){
@Override
publicvoidrun(){
//TODOAuto-generatedmethodstub
mPercentHandler.post(updatesb);
//用一个handler更新SeekBar
}
};
Runnableupdatesb=newRunnable(){
@Override
publicvoidrun(){
//TODOAuto-generatedmethodstub
intposition=mMediaPlayer.getCurrentPosition();
intmMax=mMediaPlayer.getDuration();
intsMax=mSeekBar.getMax();
mSeekBar.setProgress(position*sMax/mMax);
curtimeAndTotaltime.setText("当前播放时间:
"+position/1000+"秒"+"\n歌曲总时间:
"+mMax/1000+"秒");
mPercentHandler.postDelayed(updatesb,1000);
//每秒钟更新一次
}
};
}
/*播放文件选择类*/
classMusicFilterimplementsFilenameFilter
{
publicbooleanaccept(Filedir,Stringname)
{
/*指定扩展名类型*/
return(name.endsWith(".mp3"));
}
}
2.main.xls文件
xmlversion="1.0"encoding="utf-8"?
>
xmlns:
android="
android:
orientation="vertical"
android:
layout_width="fill_parent"
android:
layout_height="fill_parent"
>
android:
id="@id/android:
list"
android:
layout_width="fill_parent"
android:
layout_height="fill_parent"
android:
layout_weight="1"
android:
drawSelectorOnTop="false"/>
android:
id="@+id/LastImageButton"
android:
layout_width="wrap_content"
android:
layout_height="wrap_content"
android:
layout_x="10px"
android:
layout_y="70px"
android:
src="@drawable/last"
/>
android:
id="@+id/StopImageButton"
android:
layout_height="wrap_content"
android:
layout_width="wrap_content"
android:
layout_x="70px"
android:
layout_y="70px"
android:
src="@drawable/stop"
/>
android:
id="@+id/StartImageButton"
android:
layout_height="wrap_content"
android:
layout_width="wrap_content"
android:
layout_x="130px"
android:
layout_y="70px"
android:
src="@drawable/start"
/>
android:
id="@+id/PauseImageButton"
android:
layout_height="wrap_content"
android:
layout_width="wrap_content"
android:
layout_x="190px"
android:
layout_y="70px"
android:
src="@drawable/pause"
/>
android:
id="@+id/NextImageButton"
android:
layout_width="wrap_content"
android:
layout_height="wrap_content"
android:
layout_x="250px"
android:
layout_y="70px"
android:
src="@drawable/next"
/>
id="@+id/SeekBar01"
android:
layout_height="wrap_content"
android:
layout_x="0dp"
android:
layout_y="200dp"
android:
layout_width="fill_parent"
android:
max="100"
android:
progress="0"
android:
secondaryProgress="50"
android:
visibility="visible">
layout_height="wrap_content"android:
layout_width="fill_parent"android:
layout_y="250dp"android:
id="@+id/currentProgress">
layout_height="wrap_content"android:
layout_width="fill_parent"android:
layout_y="300dp"android:
id="@+id/curtimeandtotaltime">
3.musictime.xls
xmlversion="1.0"encoding="utf-8"?
>
android="
android:
id="@+id/TextView01"
android:
layout_width="fill_parent"
android:
layout_height="wrap_content"
android:
text="@string/hello"/>
4.AndroidManifest.xls
xmlversion="1.0"encoding="utf-8"?
>
android="
package="com.jacky.multimedia"
android:
versionCode="1"
android:
versionName="1.0">
icon="@drawable/icon"android:
label="@string/app_name">
name=".Mp3Player"
android:
label="@string/app_name">
name="android.intent.action.MAIN"/>
name="android.intent.category.LAUNCHER"/>