packagecom.king.android.media;

importjava.io.File;
importjava.io.FilenameFilter;
importjava.util.ArrayList;
importjava.util.List;

importandroid.app.Activity;
importandroid.media.MediaPlayer;
importandroid.media.MediaPlayer.OnCompletionListener;
importandroid.os.Bundle;
importandroid.os.Environment;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.Toast;

importcom.king.android.R;


public classMusicBActivity extendsActivity implementsOnClickListener{
public static finalStringTAG="MusicActivity";
staticList<File>allFiles= newArrayList<File>();
private intmCurrentJMusic=0; // 当前播放的音乐
privateMediaPlayermMediaPlayer= null;
@Override
protected voidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
refreshFile(getSDCardPath(),".mp3");
if(allFiles.size()<=0){
Toast.makeText(MusicBActivity. this,"没有歌曲",Toast.LENGTH_SHORT).show();
finish();
}
mMediaPlayer= newMediaPlayer();
initView();
}

publicStringgetSDCardPath(){
StringsdPath= null;
booleanhasCard=Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);
if(hasCard){
sdPath=Environment.getExternalStorageDirectory().toString();
} else{
sdPath=Environment.getDataDirectory().toString();
}
returnsdPath;
}
private voidinitView(){
setContentView(R.layout.media_layout);

ButtonbtnMedia=(Button)findViewById(R.id.btn_last);
btnMedia.setOnClickListener( this);

btnMedia=(Button)findViewById(R.id.btn_pause);
btnMedia.setOnClickListener( this);

btnMedia=(Button)findViewById(R.id.btn_stop);
btnMedia.setOnClickListener( this);

btnMedia=(Button)findViewById(R.id.btn_play);
btnMedia.setOnClickListener( this);

btnMedia=(Button)findViewById(R.id.btn_next);
btnMedia.setOnClickListener( this);

}

@Override
public voidonClick(Viewv){
switch(v.getId()){
caseR.id.btn_play:
playMusic(allFiles.get(mCurrentJMusic));
break;

caseR.id.btn_next:
nextMusic();
break;
caseR.id.btn_last:
FrontMusic();
break;

caseR.id.btn_pause:
if(mMediaPlayer.isPlaying()){
// 暂停
mMediaPlayer.pause();
} else{
// 播放
mMediaPlayer.start();
}
break;

caseR.id.btn_stop:
// 是否在播放
if(mMediaPlayer.isPlaying()){
// 重置MediaPlayer到初始状态
mMediaPlayer.reset();
}
break;

}
}

private voidplayMusic(Filefile){
try{
// 重置MediaPlayer
mMediaPlayer.reset();
// 设置播放文件的路径
// mMediaPlayer.setDataSource(file.getAbsolutePath()+File.separator+file.getName());
mMediaPlayer.setDataSource(file.getAbsolutePath());
// 播放文件
mMediaPlayer.prepare();
// 开始播放
mMediaPlayer.start();
mMediaPlayer.setOnCompletionListener( newOnCompletionListener(){
@Override
public voidonCompletion(MediaPlayermp){
// 播放完成后,进行下一首。
nextMusic();
}
});
} catch(Exceptione){
e.printStackTrace();
}
}

// 下一首
private voidnextMusic(){
if(++mCurrentJMusic>=allFiles.size()){
mCurrentJMusic=0;
} else{
playMusic(allFiles.get(mCurrentJMusic));
}
}

// 上一首
private voidFrontMusic(){
if(--mCurrentJMusic>=0){
mCurrentJMusic=allFiles.size();
} else{
playMusic(allFiles.get(mCurrentJMusic));
}
}

/** * 递归法获取文件夹文件 *TODO:TODO *Author:Andy.Liu *Create Time:2012-7-29 下午11:40:33 *TAG:@param path 文件路径,一般选择根目录 *TAG:@param fileType 文件类型。 *Return:void */ public voidrefreshFile(Stringpath,StringfileType){
Filefile= newFile(path);
File[]files=file.listFiles();
if( null==files)
return;

for( inti=0;i<files.length;i++){
if(files[i].isDirectory()){
refreshFile(files[i].getAbsolutePath(),fileType); // 注意这里的递归方法
} else{
if(files[i].getName().endsWith(fileType))
allFiles.add(files[i]);
}
}
}

}

获取文件夹中的文件夹,方法有很多,但递归法效率最高,要用最好的办法去解决问题。。。

更多相关文章

  1. Android中将assets中的文件拷贝到sd卡
  2. db文件查看工具SQLiteExpert
  3. android proc 虚拟文件系统
  4. Android 9 读写SD卡文件
  5. Android zip文件压缩解压缩
  6. Android studio 53 文件下载
  7. android 文件系统分析
  8. Android打开本地文件
  9. Android SDcard 文件读写,RandomAccessFile操作

随机推荐

  1. 0705作业
  2. 用户注册表单和上下文选择器
  3. 一个免费开源的轻量级PHP开发框架
  4. flex容器
  5. flex容器与项目的认识和常用属性
  6. flex初体验之常用属性练习
  7. 2021.7.6表格作业,
  8. flex布局中容器及项目常用属性演示
  9. flex容器以及属性
  10. flex容器与项目中常用的属性