android - 一个接一个地播放音频文件

标签 android android-mediaplayer

我有一个这样的音频文件列表,

int music_numbers[] = { R.raw.one, R.raw.two, R.raw.three, R.raw.four,
            R.raw.five, R.raw.six, R.raw.seven, R.raw.eight, R.raw.nine };

我需要一个一个地玩这个 - 当我向这个 play_numbers 方法发送 100 - 我打算玩数字明智..

我已经做到了 - 但我无法一个接一个地做到这一点..

private void _play_numbers(final String i) {
    // TODO Auto-generated method stub

    mPlayer = MediaPlayer.create(PlayFileActivity.this, R.raw.payment);
    mPlayer.start();

    mPlayer.setOnCompletionListener(new OnCompletionListener() {

        @Override
        public void onCompletion(MediaPlayer mp) {
            // TODO Auto-generated method stub
            mPlayer.stop();
            myDigit = i.charAt(1) + "";

            _function_play_file(Integer.parseInt(myDigit));

        }

    });

}

在 _function_play_file - 我有这个

void _function_play_file(int files) {

        switch (files) {
        case 0:
            mPlayer = MediaPlayer.create(this, music_numbers[0]);
            mPlayer.start();
        case 1:
            mPlayer = MediaPlayer.create(this, music_numbers[1]);
            mPlayer.start();
        case 2:
            mPlayer = MediaPlayer.create(this, music_numbers[2]);
            mPlayer.start();
        case 3:
            mPlayer = MediaPlayer.create(this, music_numbers[3]);
            mPlayer.start();
        case 4:
            mPlayer = MediaPlayer.create(this, music_numbers[4]);
            mPlayer.start();
        case 5:
            mPlayer = MediaPlayer.create(this, music_numbers[5]);
            mPlayer.start();
        case 6:
            mPlayer = MediaPlayer.create(this, music_numbers[6]);
            mPlayer.start();
        case 7:
            mPlayer = MediaPlayer.create(this, music_numbers[7]);
            mPlayer.start();
        case 8:
            mPlayer = MediaPlayer.create(this, music_numbers[8]);
            mPlayer.start();
        case 9:
            mPlayer = MediaPlayer.create(this, music_numbers[9]);
            mPlayer.start();
        case 10:
            mPlayer = MediaPlayer.create(this, music_numbers[10]);
            mPlayer.start();

        }
    }

最佳答案

您需要为每个设置一个 onCompletionListener 并在完成时启动下一个。

mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() 
{
    @Override
    public void onCompletion(MediaPlayer mp) 
    {
         // Code to start the next audio in the sequence
    }
});

实现此目的的最佳方法是创建一个实现 OnCompletionListener 的类,该类处理 onCompletion 并接收要播放的下一个文件。这样您就可以在代码中很好地实例化它。 当然,不要忘记你的休息时间;在上述情况下。

关于android - 一个接一个地播放音频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10781522/

相关文章:

android - Flutter AppBar 上方有多余空间

java - 如何修复有关 getSupportFragmentManager() 的此错误?

java - Android MediaPlayer 直播音频流 : how to know if a live streaming URL can't be streamed?

iphone - Android无法读取iPhone录制的音频文件

android - 媒体播放器 : Should have subtitle controller already set: KitKat

java - 音频文件无法使用 mediaController 播放?

android - 从联系人 ID : android 中检索电话号码

java - 无需切换即可处理 View 的 ID

c# - 连接android客户端成为C#服务器

android - Handler.postDelayed(...) 不会延迟 Runnable