我试图以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/