我正在尝试延迟重复播放一个非常短的音频文件。我使用的代码是:
mp = MediaPlayer.create(MainActivity.this, R.raw.audio);
mp.start();
mp.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.seekTo(0);
try {
mp.start();
android.os.SystemClock.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
我没有使用MediaPlayer循环的原因是因为我想要延迟。这段代码工作正常,但由于SystemClock.sleep部分,它锁定了我的整个应用程序。所以我决定将它放入一个线程来使用本机sleep()函数:
Thread th = new Thread(){
MediaPlayer mp;
public void run() {
mp = MediaPlayer.create(MainActivity.this, R.raw.audio);
mp.start();
mp.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.seekTo(0);
try {
mp.start();
sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
}};
th.start();
现在发生的事情是它播放文件一次并停止。 所以,我尝试删除睡眠功能,这使它变得奇怪。该文件播放约5或6次然后停止。线程有时间限制吗?我发现这很奇怪。我希望音频文件继续播放。
答案 0 :(得分:0)
如何在媒体播放器中使用循环功能。
尝试在mp.setLooping(true);
mp.start();