android - 更改延迟播放的音频

标签 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();
        }

}       

最佳答案

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

我认为您可能想在MediaPlayer对象上调用MediaPlayer#setOnCompletionListener。然后在完成侦听器中,可以将Delayed延迟到Handler上,以排队播放下一个资源。

关于android - 更改延迟播放的音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21947103/

相关文章:

css - url 根目录下的 django 静态文件

android - 在单击集群时渲染集群项目

java - Java中如何从另一个对象调用对象的方法?

iPhone iOS5 有哪些选项可以播放我未捆绑的音频?

video - 嵌入私有(private)视频

android - 如何在 Android 中保存文件(图像)并支持从 21 到 29 的 API 级别?

java - libgdx 中两个边界框之间的碰撞检测

java - 如何在 android studio CountdownTimer 中的另一个 CountdownTimer 中重新启动(两者都工作正常)

java - Android AudioTrack getPlaybackHeadPosition 总是返回 0

iphone - 播放简短的单词声音,以及声音文件格式?