如何播放下一首歌曲的随机歌曲[重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何播放下一首歌曲的随机歌曲[重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

我有一系列歌曲,我的应用程序在活动打开时随机播放歌曲但是当歌曲结束时我想播放阵列中的另一首随机歌曲,有人可以帮忙吗?

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接口

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并将其用于所有随机需求。

以上是关于如何播放下一首歌曲的随机歌曲[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用pygame自动完成歌曲后如何播放文件中的下一首歌曲

如何使用 PlaySound 同时执行其他功能?

一首歌在反应音频播放器中结束后,我想播放下一首歌曲。我已经获得了指向数组的所有歌曲链接,但不确定如何实现 func

为网站构建自定义 mp3 播放器 - 不知道如何编写播放上一首歌曲,播放下一首歌曲功能

如何在所有活动和片段中使用 MediaPlayer 的单个实例?

无法播放队列中的下一首歌曲