android 22 简易音乐播放器实现附全部实现代码Word文件下载.docx
《android 22 简易音乐播放器实现附全部实现代码Word文件下载.docx》由会员分享,可在线阅读,更多相关《android 22 简易音乐播放器实现附全部实现代码Word文件下载.docx(9页珍藏版)》请在冰豆网上搜索。
mPauseImageButton
mStopImageButton
mNextImageButton
/*定义进度handler,显示百分比进度*/
HandlermPercentHandler=newHandler();
/*定义拖动条*/
privateSeekBar
mSeekBar=null;
/*定义显示文本框*/
privateTextViewcurProgressText=null;
privateTextViewcurtimeAndTotaltime=null;
/*定于一个多媒体对象*/
publicMediaPlayer
mMediaPlayer
/*定于一个数据播放列表,用来存放从指定文件中搜索到的文件*/
privateList<
String>
mMusicList=newArrayList<
();
/*定义在播放列表中的当前选择项*/
privateintcurrentListItme=0;
/*定义要播放的文件夹路径*/
privatestaticfinalStringMUSIC_PATH=newString("
/mnt/sdcard/"
);
@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()
publicvoidonClick(Viewv)
/*判断是否正在播放歌曲*/
if(mMediaPlayer.isPlaying())
/*如果在播放歌曲时,按下开始按钮,则重开开始播放*/
mMediaPlayer.reset();
}
});
/*监听开始按钮*/
mStartImageButton.setOnClickListener(newImageButton.OnClickListener()
{
/*播放当前选择歌曲,通过listView列表中onListItemClick方法得到选择的时第几项*/
playMusic(MUSIC_PATH+mMusicList.get(currentListItme));
/*开始播放歌曲时,同步进行更新拖动条进度*/
startSeekBarUpdate();
}
/*监听暂停按钮*/
mPauseImageButton.setOnClickListener(newImageButton.OnClickListener()
publicvoidonClick(Viewview)
/*如果有播放歌曲,暂停*/
mMediaPlayer.pause();
else
/*如果没有播放歌曲,则开始播放*/
mMediaPlayer.start();
/*监听下一首按钮*/
mNextImageButton.setOnClickListener(newImageButton.OnClickListener()
publicvoidonClick(Viewarg0)
nextMusic();
/*监听上一首按钮*/
mFrontImageButton.setOnClickListener(newImageButton.OnClickListener()
FrontMusic();
/*监听拖动条*/
mSeekBar.setOnSeekBarChangeListener(newOnSeekBarChangeListener()
publicvoidonProgressChanged(SeekBarseekBar,intprogress,
booleanfromUser){
//TODOAuto-generatedmethodstub
/*如果拖动进度发生改变,则显示当前进度值*/
curProgressText.setText("
当前进度:
"
+progress);
publicvoidonStartTrackingTouch(SeekBarseekBar){
拖动中..."
publicvoidonStopTrackingTouch(SeekBarseekBar){
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());
/*播放文件与播放列表关联*/
ArrayAdapter<
musicList=newArrayAdapter<
(Mp3Player.this,R.layout.musicitme,mMusicList);
setListAdapter(musicList);
/*播放指定路径中的音乐*/
privatevoidplayMusic(Stringpath)
try
/*重置多媒体*/
/*读取mp3文件*/
mMediaPlayer.setDataSource(path);
/*准备播放*/
mMediaPlayer.prepare();
/*开始播放*/
/*监听播放是否完成*/
mMediaPlayer.setOnCompletionListener(newOnCompletionListener()
publicvoidonCompletion(MediaPlayerarg0)
/*播放完当前歌曲,自动播放下一首*/
}catch(IOExceptione){}
/*播放下一首*/
privatevoidnextMusic()
if(++currentListItme>
=mMusicList.size())
currentListItme=0;
else
/*播放上一首歌曲*/
privatevoidFrontMusic()
if(--currentListItme>
=0)
/*更新拖动条进度*/
publicvoidstartSeekBarUpdate()
mPercentHandler.post(start);
Runnablestart=newRunnable(){
publicvoidrun(){
mPercentHandler.post(updatesb);
//用一个handler更新SeekBar
};
Runnableupdatesb=newRunnable(){
intposition=mMediaPlayer.getCurrentPosition();
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"
>
AbsoluteLayout
xmlns:
android="
android:
orientation="
vertical"
layout_width="
fill_parent"
layout_height="
ListView
id="
@id/android:
list"
layout_weight="
1"
drawSelectorOnTop="
false"
/>
ImageButton
@+id/LastImageButton"
wrap_content"
layout_x="
10px"
layout_y="
70px"
src="
@drawable/last"
@+id/StopImageButton"
@drawable/stop"
@+id/StartImageButton"
130px"
@drawable/start"
@+id/PauseImageButton"
190px"
@drawable/pause"
@+id/NextImageButton"
250px"
@drawable/next"
SeekBarandroid:
@+id/SeekBar01"
0dp"
200dp"
max="
100"
progress="
0"
secondaryProgress="
50"
visibility="
visible"
/SeekBar>
TextViewandroid:
android:
250dp"
@+id/currentProgress"
/TextView>
300dp"
@+id/curtimeandtotaltime"
/AbsoluteLayout>
3.musictime.xls
TextViewxmlns:
@+id/TextView01"
text="
@string/hello"
4.AndroidManifest.xls
manifestxmlns:
package="
com.jacky.multimedia"
versionCode="
versionName="
applicationandroid:
icon="
@drawable/icon"
label="
@string/app_name"
activityandroid:
name="
.Mp3Player"
intent-filter>
actionandroid:
android.intent.action.MAIN"
/>
categoryandroid:
android.intent.category.LAUNCHER"
/intent-filter>
/activity>
/application>
uses-sdkandroid:
minSdkVersion="
3"
/manifest>