改变延迟android播放的音频

时间:2014-02-21 23:15:21

标签: android audio media playback

我试图以5秒的时间间隔一个接一个地运行音频。但是,我真的没有看到这种情况发生。播放列表中的第三个音频,跳过其他音频。这意味着在调试时只播放music3而其他则不播放。我会喜欢这样做的替代方法。而且我就像那样使用了准备方法。跑步时没有任何区别。

for(int j=0;j<3;j++)
{

    if(j==0)
        {
        xnp = MediaPlayer.create(this,R.raw.ticktock);
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                try {
                xnp.prepare();
                xnp.start();
            } catch (IllegalStateException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        }, 5000);

        xnp.stop();
        }
    if(j==1)
        {
        xnp = MediaPlayer.create(this,R.raw.music2);
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                try {
                xnp.prepare();
                xnp.start();
            } catch (IllegalStateException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        }, 5000);

        xnp.stop();
        }
    else if (j==2)
        {
        xnp = MediaPlayer.create(this,R.raw.music3);
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                try {
                    xnp.prepare();
                    xnp.start();
                } catch (IllegalStateException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            }, 5000);
        xnp.stop();
        intenter();
        }

}       

1 个答案:

答案 0 :(得分:0)

您当前的实现不起作用,因为未在主线程上播放媒体,因此您将立即播放所有3个媒体资源,因此只能听到第三个媒体资源。

我想您可能想在MediaPlayer对象上调用MediaPlayer#setOnCompletionListener。在完成侦听器中,您可以postDelayed到您的处理程序上以排队下一个要播放的资源。