Media Player播放每个声音文件两次

问题描述:

我希望数据库中的每个声音文件在播放下一个声音文件之前播放两次。Media Player播放每个声音文件两次

这是我的课。

public void startSlides() { 

    timer = new Timer(); 
    timer.scheduleAtFixedRate(new TimerTask() { 

     public void run() { 
      runOnUiThread(new Runnable() { 
       public void run() { 

        Intent intent = getIntent(); 

        int setId = intent.getIntExtra("SelectedSetId",0); 

        databaseAccess.open(); 


        setId = setId + 1; 


        final List<byte[]> audio = databaseAccess.getAudioA(setId); 

        if (i > audio.size()){ 
         i = 0; 
        }else{ 
         playAudio(audio.get(i)); 
         i++;} 


        List<String> vocab = databaseAccess.getVocabNameA(setId); 
        textView2.setText(vocab.get(k)); 
        k++; 

        textView.setText(+j + "/" + vocab.size()); 
        j++; 

        databaseAccess.close(); 

        if (j == vocab.size() + 1) { 
         timer.cancel(); 
        } 
       } 
      }); 
     } 

    }, 0, DURATION); 

} 

我试图调用播放音频方法两次,但它不工作(它只是在同一时间播放相同的文件)。

final List<byte[]> audio = databaseAccess.getAudioA(setId); 

        //first time 

        if (i > audio.size()){ 
         i = 0; 
        }else{ 
         playAudio(audio.get(i)); 
         i++;} 

        //second time 

        if (i > audio.size()){ 
         i = 0; 
        }else{ 
         playAudio(audio.get(i)); 
         i++;} 

任何人都有任何建议我应该怎么做?谢谢

+0

*如何修复我的代码* **是什么破**也许是'playAudio'开始一个新的主题???你需要等待它完成 - 疯狂的猜测! –

+0

@ScaryWombat,我的意思是任何建议我应该怎么做它来播放音频文件两次。 – chernting

+0

我很抱歉,我没有明白你的意思。 – chernting

这样的方式可以帮助你:

private int mPlaybackCount = 0; 

mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
       @Override 
       public void onCompletion(MediaPlayer mp) { 
        if(mPlaybackCount < 1){ 
         mPlaybackCount++; 
         // Play Song again 
        } else { 
         mPlaybackCount = 0; 
         // Play Next Song 
        } 


       } 
      }); 
+0

嗨,我已经添加到我的playAudio方法,但它仍然无法正常工作。 – chernting