我试图播放媒体播放器中的音频文件,一旦文件完全播放,然后从特定文件的某个位置循环并继续重复循环。在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?我不知道版本问题。 –