媒体播放器播放完第一首歌曲后播放下一首歌曲
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();
}
}
但是没有任何效果,第一首歌曲结束后没有任何反应
将 void 上的代码更改为此
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();
}
}
会解决问题
我想做一个程序,在结束变量后自动播放下一首歌曲;
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();
}
}
但是没有任何效果,第一首歌曲结束后没有任何反应
将 void 上的代码更改为此
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();
}
}
会解决问题