我試圖播放媒體播放器中的音頻文件,一旦文件完全播放,然後從特定文件的某個位置循環並繼續重複循環。在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();
}
};
您使用來執行此任務的API。你可以張貼你試過的東西.. –
@TechEnd我正在使用API 8(Android 2.2)來執行此任務。我還沒有開始實施,但無法在我的腦海中實現。 –
我的意思是你使用AudioRecord API或MediaPlayer Android API?我不知道版本問題。 –