Android 从目录连续播放音频文件
我正在使用以下代码从SD卡中的目录连续播放音频文件 我面临的问题是一次播放所有文件。我需要一个接一个地玩Android 从目录连续播放音频文件,android,audio,Android,Audio,我正在使用以下代码从SD卡中的目录连续播放音频文件 我面临的问题是一次播放所有文件。我需要一个接一个地玩 mPlay.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub getFiles
mPlay.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
getFiles();
}
private void getFiles() {
// TODO Auto-generated method stub
File dir = new File("/sdcard/sdcard");
int index=0;
String[] children = dir.list();
for(int i=0;i<children.length;i++)
{
String filename=children[i];
playAudio(filename);
}
}
private void playAudio(String filename) {
// TODO Auto-generated method stub
mPlayer = new MediaPlayer();
try {
mPlayer.setDataSource(filename);
} catch (IllegalArgumentException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IllegalStateException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
mPlayer.prepare();
} catch (IllegalStateException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
mPlayer.start();
mSeekBar.setMax(mPlayer.getDuration());
new Thread(new Runnable(){
@Override
public void run()
{
// TODO Auto-generated method stub
while(mPlayer!=null && mPlayer.getCurrentPosition() <mPlayer.getDuration())
{
Log.d("Indide Run Method",Integer.toString(mPlayer.getCurrentPosition()));
try
{
Thread.sleep(100);
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
mSeekBar.setProgress(mPlayer.getCurrentPosition());
}
}
}
).start();
mSeekBar.setProgress(mPlayer.getCurrentPosition());
pauseRecord.setVisibility(View.INVISIBLE);
}
});
要连续播放一个文件,可以使用MediaPlayer.OnCompletionListener:
final MediaPlayer mp1 = new MediaPlayer();
mp1.setAudioStreamType(AudioManager.STREAM_MUSIC);
mp1.setDataSource(file1);
mp1.prepare();
mp1.start();
mp1.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp1.release();
//file 1 has played, now play the second
}
});
final MediaPlayer mp1 = new MediaPlayer();
mp1.setAudioStreamType(AudioManager.STREAM_MUSIC);
mp1.setDataSource(file1);
mp1.prepare();
mp1.start();
mp1.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp1.release();
//file 1 has played, now play the second
}
});