如何播放歌曲数组中的下一首随机歌曲
How to play next random song of the array of songs
我有一组歌曲,当 activity 打开时,我的应用会随机播放歌曲,但当歌曲播放完毕后,我想从数组中随机播放另一首歌曲,有人可以帮忙吗?
public MediaPlayer mediaPlayer;
private int songs[];
songs = new int[] {
R.raw.track1,
R.raw.track2,
R.raw.track3,
R.raw.track4,
R.raw.track5,
R.raw.track6,
R.raw.track7,
R.raw.track8,
R.raw.track9,
R.raw.track10,
R.raw.track11,
R.raw.track12,
R.raw.track13,
R.raw.track14,
R.raw.track15,
R.raw.track16,
R.raw.track17,
};
int randomSong = new Random().nextInt(songs.length);
mediaPlayer = MediaPlayer.create(this, songs[randomSong]);
mediaPlayer.start();
你需要设置一个completion listener:
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
void onCompletion(MediaPlayer mp) {
// Play next song
}
});
试试这个,你需要实现 MediaPlayer.OnCompletionListener
接口
在你的 activity
public class MainActivity extends AppCompatActivity implements MediaPlayer.OnCompletionListener {
private MediaPlayer mediaPlayer;
private int songs[];
private int randomSong;
private Random random = new Random();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mediaPlayer.setOnCompletionListener(this);
songs = new int[]{
R.raw.track1,
R.raw.track2,
R.raw.track3,
R.raw.track4,
R.raw.track5,
R.raw.track6,
R.raw.track7,
R.raw.track8,
R.raw.track9,
R.raw.track10,
R.raw.track11,
R.raw.track12,
R.raw.track13,
R.raw.track14,
R.raw.track15,
R.raw.track16,
R.raw.track17,
};
randomSong = getRandom(songs);
mediaPlayer = MediaPlayer.create(this, songs[randomSong]);
mediaPlayer.start();
}
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
randomSong = getRandom(songs);
mediaPlayer = MediaPlayer.create(this, songs[randomSong]);
mediaPlayer.start();
}
public int getRandom(int[] array) {
return random.nextInt(array.length);
}
}
歌曲播放完毕后,您可以使用监听器 运行 回调:
setOnCompletionListener(MediaPlayer.OnCompletionListener listener)
此外,为确保随机性,我强烈建议您不要在每次需要随机数时都使用新的 Random
对象。相反,声明一个变量 random
并将其用于您所有的随机性需求。
我有一组歌曲,当 activity 打开时,我的应用会随机播放歌曲,但当歌曲播放完毕后,我想从数组中随机播放另一首歌曲,有人可以帮忙吗?
public MediaPlayer mediaPlayer;
private int songs[];
songs = new int[] {
R.raw.track1,
R.raw.track2,
R.raw.track3,
R.raw.track4,
R.raw.track5,
R.raw.track6,
R.raw.track7,
R.raw.track8,
R.raw.track9,
R.raw.track10,
R.raw.track11,
R.raw.track12,
R.raw.track13,
R.raw.track14,
R.raw.track15,
R.raw.track16,
R.raw.track17,
};
int randomSong = new Random().nextInt(songs.length);
mediaPlayer = MediaPlayer.create(this, songs[randomSong]);
mediaPlayer.start();
你需要设置一个completion listener:
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
void onCompletion(MediaPlayer mp) {
// Play next song
}
});
试试这个,你需要实现 MediaPlayer.OnCompletionListener
接口
在你的 activity
public class MainActivity extends AppCompatActivity implements MediaPlayer.OnCompletionListener {
private MediaPlayer mediaPlayer;
private int songs[];
private int randomSong;
private Random random = new Random();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mediaPlayer.setOnCompletionListener(this);
songs = new int[]{
R.raw.track1,
R.raw.track2,
R.raw.track3,
R.raw.track4,
R.raw.track5,
R.raw.track6,
R.raw.track7,
R.raw.track8,
R.raw.track9,
R.raw.track10,
R.raw.track11,
R.raw.track12,
R.raw.track13,
R.raw.track14,
R.raw.track15,
R.raw.track16,
R.raw.track17,
};
randomSong = getRandom(songs);
mediaPlayer = MediaPlayer.create(this, songs[randomSong]);
mediaPlayer.start();
}
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
randomSong = getRandom(songs);
mediaPlayer = MediaPlayer.create(this, songs[randomSong]);
mediaPlayer.start();
}
public int getRandom(int[] array) {
return random.nextInt(array.length);
}
}
歌曲播放完毕后,您可以使用监听器 运行 回调:
setOnCompletionListener(MediaPlayer.OnCompletionListener listener)
此外,为确保随机性,我强烈建议您不要在每次需要随机数时都使用新的 Random
对象。相反,声明一个变量 random
并将其用于您所有的随机性需求。