我正在尝试使用依次播放多个媒体文件MediaPlayer
。我尝试播放文件的目录中大约有20个文件,我编写的代码仅播放三个文件,然后停止播放。请指出我的错误并帮助我解决它。
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mediaPlayer.stop();
System.out.println("coming here to playNextMEdia");
playNextMedia();
}
});
}
private void playNextMedia() {
System.out.println("playNextMedia "+files.size()+"and"+counter );
if(counter<files.size()){
mediaPlayer = MediaPlayer.create(getApplicationContext(), Uri.fromFile(files.get(counter)));
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mediaPlayer.stop();
System.out.println("playNextFile() cehck 1");
//playNextFile();
//System.out.println("playNextFile() cehck 2");
counter++;
playNextMedia();
}
});
Logcat
10-09 21:49:10.129: I/System.out(2644): coming here to playNextMEdia
10-09 21:49:10.129: I/System.out(2644): playNextMedia 19and1
10-09 21:49:36.249: I/System.out(2644): playNextFile() cehck 1
10-09 21:49:36.249: I/System.out(2644): playNextMedia 19and2
可能我缺少小额条件检查之类的东西。
编辑1
if (fd != null) {
try {
mediaPlayer.reset();
mediaPlayer.setDataSource(fd);
//mediaPlayer = MediaPlayer.create(getApplicationContext(), Uri.fromFile(files.get(counter)));
mediaPlayer.setScreenOnWhilePlaying(true);
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
mediaPlayer.start();
尝试这样的事情:
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
counter++;
if (counter < files.size()) {
mediaPlayer.setDataSource(files.get(counter));
mediaPlayer.prepare();
mediaPlayer.start();
}
}
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句