【发布时间】:2012-11-27 13:08:15
【问题描述】:
我正在尝试在媒体播放器中播放音频文件,一旦文件完全播放,然后从该特定文件的某个位置循环并继续重复循环。
我见过一种方法 seekTo() 从特定点播放,但我对如何首先完全播放文件然后使用 seekTo 函数感到困惑。
任何帮助将不胜感激。须藤代码将帮助一个很好的。
添加代码:
这是我尝试过的代码但它会在再次播放声音之前留下大约一秒钟的间隙。
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 ???我不想问版本。
-
@TechEnd 我正在使用 MediaPlayer
标签: android audio android-mediaplayer