Android 音乐播放器。
16lz
2021-01-23
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]);
}
}
}
}
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]);
}
}
}
}
获取文件夹中的文件夹,方法有很多,但递归法效率最高,要用最好的办法去解决问题。。。
更多相关文章
- Android中将assets中的文件拷贝到sd卡
- db文件查看工具SQLiteExpert
- android proc 虚拟文件系统
- Android 9 读写SD卡文件
- Android zip文件压缩解压缩
- Android studio 53 文件下载
- android 文件系统分析
- Android打开本地文件
- Android SDcard 文件读写,RandomAccessFile操作