簡體   English   中英

循環MediaPlayer在線程中停止

[英]Looped MediaPlayer Stopping in Thread

我試圖延遲播放一個很短的音頻文件。 我使用的代碼是:

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次,然后停止了。 線程有時間限制嗎? 我覺得這很奇怪。 我希望音頻文件繼續播放。

如何在媒體播放器中使用循環功能。

嘗試添加mp.setLooping(true); mp.start();之前mp.start();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM