播放音频文件一个接一个 [英] Playing audio files one after another

查看:109
本文介绍了播放音频文件一个接一个的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的音频文件,像这样的列表,

  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};
 

我需要打一处来这一个 - 当我送100本play_numbers方法 - 我打算玩数字明智的。

我已经做到了这一点 - 但我无法做到这一点了一个又一个。

 私人无效_play_numbers(最后弦乐我){
    // TODO自动生成方法存根

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

    mPlayer.setOnCompletionListener(新OnCompletionListener(){

        @覆盖
        公共无效onCompletion(MediaPlayer的MP){
            // TODO自动生成方法存根
            mPlayer.stop();
            myDigit = i.charAt(1)+;

            _function_play_file(的Integer.parseInt(myDigit));

        }

    });

}
 

在_function_play_file - 我有这个

 无效_function_play_file(INT文件){

        开关(文件){
        情况下0:
            MPLAYER = MediaPlayer.create(这一点,music_numbers [0]);
            mPlayer.start();
        情况1:
            MPLAYER = MediaPlayer.create(这一点,music_numbers [1]);
            mPlayer.start();
        案例2:
            MPLAYER = MediaPlayer.create(这一点,music_numbers [2]);
            mPlayer.start();
        案例3:
            MPLAYER = MediaPlayer.create(这一点,music_numbers [3]);
            mPlayer.start();
        壳体4:
            MPLAYER = MediaPlayer.create(这一点,music_numbers [4]);
            mPlayer.start();
        壳体5:
            MPLAYER = MediaPlayer.create(这一点,music_numbers [5]);
            mPlayer.start();
        情况6:
            MPLAYER = MediaPlayer.create(这一点,music_numbers [6]);
            mPlayer.start();
        案例7:
            MPLAYER = MediaPlayer.create(这一点,music_numbers [7]);
            mPlayer.start();
        案例8:
            MPLAYER = MediaPlayer.create(这一点,music_numbers [8]);
            mPlayer.start();
        案例9:
            MPLAYER = MediaPlayer.create(这一点,music_numbers [9]);
            mPlayer.start();
        案例10:
            MPLAYER = MediaPlayer.create(这一点,music_numbers [10]);
            mPlayer.start();

        }
    }
 

解决方案

您需要设置一个onCompletionListener每个并开始下一个上完成。

  mPlayer.setOnCompletionListener(新MediaPlayer.OnCompletionListener()
{
    @覆盖
    公共无效onCompletion(MediaPlayer的熔点)
    {
         // code键启动序列中的下一个音频
    }
});
 

要实现这一目标的最佳方法是创建一个实现OnCompletionListener它处理onCompletion并接收下一个文件播放的一类。这样你就可以在你的code很好的实例化。 当然,不要忘记你的突破;在上述情况下。

I have a list of audio files like this,

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 };

I need to play this one by one - when i send 100 to this play_numbers method - i am intend to play digit wise..

I have done this - but i unable to do this one after another..

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));

        }

    });

}

in _function_play_file - i have this

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();

        }
    }

解决方案

You need to set an onCompletionListener to each and start the next one on completion.

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

The best way to achieve this is to create a class that implements OnCompletionListener which handles the onCompletion and receives the next file to play. This way you can instantiate it nicely in your code. Of course, don't forget your break; in the cases above.

这篇关于播放音频文件一个接一个的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆