2013-05-04 35 views
2

我試圖播放音頻文件的x次數,並向用戶顯示x的值。我的問題是我可以使用mp.setLooping(true)來循環一個音頻沒有任何間隙之間循環,但我不能處理重複的次數。所以我用OnCompletionListener一切都很好,但是它在每次重複結束或開始時產生1秒的間隙。如何消除砍斷音頻文件之間的差距Android

如果我使用mp.setLooping(true)循環之間沒有差距。

如果我使用OnCompletionListener循環之間的明顯差距。

此差距僅在Android 4.x.x和3.x.x上生成。我怎樣才能擺脫這種差距?在此先感謝..

我的代碼:

int n = 1; 
int maxCount = 15; //This value changes according to user input. 
private void mpplay() { 
    // TODO Auto-generated method stub 
    mp.start(); 
    mp.setOnCompletionListener(new OnCompletionListener() { 
     @Override 
     public void onCompletion(MediaPlayer mp) { 
      if (n <= maxCount) { 
       mp.start(); 
       n++; 
       tv.setText("Counter:" + n); 
       if (n >= maxCount) { 
        n = 1; 
        mp.stop(); 
       } 
      } 
     } 
    }); 
} 
+0

'N'和'maxCount'在全球範圍內宣佈。 – 2013-05-04 07:47:02

+1

添加線程和可運行處理程序在第一個音頻完成一毫秒之前播放第二個音頻文件。 – user1621629 2013-05-04 08:06:32

回答

2

你可以嘗試使用兩個媒體播放器:

int n = 1; 
int maxCount = 15; //This value changes according to user input. 

MediaPlayer mp1 = new MediaPlayer(); 
mp1.setOnCompletionListener(new OnCompletionListener() { 
     @Override 
     public void onCompletion(MediaPlayer mp) { 
      if (n <= maxCount) { 
       mp2.start(); 
       mp1.setDataSource(<File>); 
       mp1.prepare(); 
       n++; 
       tv.setText("Counter:" + n); 
       if (n >= maxCount) { 
        n = 1; 
        mp2.stop(); 
       } 
      } 
     } 
    }); 


MediaPlayer mp2 = new MediaPlayer(); 
mp2.setOnCompletionListener(new OnCompletionListener() { 
     @Override 
     public void onCompletion(MediaPlayer mp) { 
      if (n <= maxCount) { 
       mp1.start(); 
       mp2.setDataSource(<File>); 
       mp2.prepare(); 
       n++; 
       tv.setText("Counter:" + n); 
       if (n >= maxCount) { 
        n = 1; 
        mp1.stop(); 
       } 
      } 
     } 
    }); 

private void mpplay() { 
    mp1.setDataSource(<File>); 
    mp1.prepare(); 
    mp1.start(); 
} 
+0

不,這沒有奏效。 – 2013-05-05 04:37:09

+0

它爲什麼不起作用? – 2013-05-05 15:22:11

+0

循環之間仍有差距。 – 2013-05-05 15:30:14