2012-11-27 98 views
1

我試圖播放媒體播放器中的音頻文件,一旦文件完全播放,然後從特定文件的某個位置循環並繼續重複循環。在Android媒體播放器中循環播放

我已經看到一個方法seekTo()從一個特定的點播放,但我很困惑如何首先播放完整的文件,然後使用seekTo函數。

任何幫助,將不勝感激。 Sudo代碼將會有所幫助。

添加代碼:

這裏是我曾嘗試的代碼,但它留下約一秒鐘差距再次播放聲音之前。

public void playBackgroundMusic() { 
    AssetFileDescriptor descriptor = null; 
    try { 
     descriptor = context.getAssets().openFd("music/" + FILE_NAME); 
     try { 
      this.mediaPlayer.setDataSource(descriptor.getFileDescriptor(), 
        descriptor.getStartOffset(), descriptor.getLength()); 
     } catch (IllegalStateException e) { 
      this.mediaPlayer.reset(); 
      this.mediaPlayer.setDataSource(descriptor.getFileDescriptor(), 
        descriptor.getStartOffset(), descriptor.getLength()); 
     } 
     if (listener != null) { 
      this.mediaPlayer.setOnCompletionListener(listener); 
     } 
     this.mediaPlayer.setOnErrorListener(new OnErrorListener() { 

      @Override 
      public boolean onError(MediaPlayer arg0, int arg1, int arg2) { 
       // TODO Auto-generated method stub 
       return false; 
      } 
     }); 
     this.mediaPlayer.setLooping(false); 
     this.mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
     this.mediaPlayer.prepare(); 
     this.mediaPlayer.start(); 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } finally { 
     try { 
      if (descriptor != null) { 
       descriptor.close(); 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

private OnCompletionListener listener = new OnCompletionListener() { 

    @Override 
    public void onCompletion(MediaPlayer mp) { 
     // TODO Auto-generated method stub 
     mp.seekTo(DEFAULT_LOOPING_TIME); 
     mp.start(); 
    } 
}; 
+0

您使用來執行此任務的API。你可以張貼你試過的東西.. –

+0

@TechEnd我正在使用API​​ 8(Android 2.2)來執行此任務。我還沒有開始實施,但無法在我的腦海中實現。 –

+0

我的意思是你使用AudioRecord API或MediaPlayer Android API?我不知道版本問題。 –

回答

0
  • 從一開始播放的媒體。
  • 使用onPlaybackFinished事件,或類似的再次啓動媒體 東西,這次與seekTo()方法
+0

試過這個,但是當聲音結束時,它會在1秒鐘之間沒有聲音之間留下凹凸,然後開始重複。任何解決方案?我需要它平穩無阻。 –

+0

我已經添加了關於這個問題的代碼,如果你可以看看它。 –