循环MediaPlayer在线程中停止

时间:2015-01-12 01:28:38

标签: java android eclipse multithreading audio

我正在尝试延迟重复播放一个非常短的音频文件。我使用的代码是:

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次然后停止。线程有时间限制吗?我发现这很奇怪。我希望音频文件继续播放。

1 个答案:

答案 0 :(得分:0)

如何在媒体播放器中使用循环功能。

尝试在mp.setLooping(true);

之前添加mp.start();