![](/img/trans.png)
[英]Android Media player OncompletionListener Play Next song but not the second song
[英]Media player play next song after completion of the first one
我想制作一個程序,在一個結束變量之后自動播放下一首歌;
String path = "/mnt/sdcard/Music/";
String[] fileArray;
public int songNumber = 0;
MediaPlayer mPlayer = new MediaPlayer();
public boolean isPlaying = false;
public boolean isPaused = false;`
虛空是;
private void playMusic(String song){
if(!isPlaying) {
try {
mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mPlayer) {
songNumber = songNumber + 1;
playMusic("/mnt/sdcard/Music/" + fileArray[songNumber]);
}
});
mPlayer.reset();
Toast.makeText(getApplicationContext(), song, Toast.LENGTH_SHORT).show();
mPlayer.setDataSource(song);
mPlayer.prepare();
mPlayer.setOnCompletionListener((OnCompletionListener) this);
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (Exception e) {
System.out.println("Exception of type : " + e.toString());
e.printStackTrace();
}
mPlayer.start();
isPlaying = true;
}else{
stopMusic();
}
}
但是什么也沒用,在第一首歌結束后什么也沒發生
將無效代碼更改為此
private void playMusic(String song){
if(!isPlaying) {
try {
mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mPlayer) {
isPlaying = false;
mPlayer.reset();
songNumber = songNumber + 1;
playMusic("/mnt/sdcard/Music/" + fileArray[songNumber]);
}
});
Toast.makeText(getApplicationContext(), song, Toast.LENGTH_SHORT).show();
mPlayer.setDataSource(song);
mPlayer.prepare();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (Exception e) {
System.out.println("Exception of type : " + e.toString());
e.printStackTrace();
}
mPlayer.start();
isPlaying = true;
}else{
stopMusic();
}
}
會解決問題嗎
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.