2013-04-15 44 views
2

我想等以後打MediaPlayer的一個,我能抽到第一個文件,但可能無法獲得剩餘的文件...Oncompletion監聽器在Android的媒體播放器

這個代碼是否正確?

private void playRecording() { 

    player = new MediaPlayer(); 

    player.setOnCompletionListener(new OnCompletionListener() { 
     @Override 
     public void onCompletion(MediaPlayer mp) { 
      // TODO Auto-generated method stub 
      player.stop(); 
      if (i < numberOfFiles) { 

       i++; 
       playAudio(Environment.getExternalStorageDirectory() 
         .getAbsolutePath() 
         + "/android" 
         + i 
         + ".3gp"); 
      }else i=0; 
     } 


    }); 
    player.start(); 

playAudio:

private void playAudio(String filename) { 
     try { 
     player.setDataSource(filename); 
     player.prepare(); 
     player.start(); 
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     } 
     } 
+0

log cat中的任何錯誤? – RobinHood

+0

日誌貓沒有錯誤..我得到,但音頻正確,但它不會去第二個音頻.. – user2243468

+0

什麼是'playAudio'? – RobinHood

回答

3

變化OnCompletionListener有以下幾點:

player.setOnCompletionListener(new OnCompletionListener() { 
     @Override 
     public void onCompletion(MediaPlayer mp) { 
      // TODO Auto-generated method stub 
      mp.stop(); 
      mp.release(); 
      if (i < numberOfFiles) { 
       i++; 
String path=Environment.getExternalStorageDirectory() .getAbsolutePath()+ "/android"+"/"+i+".3gp"; 
      playAudio(path); 
      } 
      else i=0; 
     } 
+0

當我使用此mp.release(); 它不工作.. – user2243468

+0

因爲@sssvrock說你應該使用reset()來代替release。 –

3

代替主叫mp.release();的最好是打電話mp.reset();

其中釋放將釋放對象和復位就像是剛剛創建的對象。

+0

請不要在答案上添加評論作爲答案。 – bummi