Android 我的mediaplayer没有';";“循环”;好
我有一个扩展服务的类,我有一个MediaPlayer来管理我的应用程序的背景音乐Android 我的mediaplayer没有';";“循环”;好,android,Android,我有一个扩展服务的类,我有一个MediaPlayer来管理我的应用程序的背景音乐 MediaPlayer player = MediaPlayer.create(this, R.raw.background_music); player.setLooping(true); 问题是它不能很好地“循环”:我的意思是,当mp3文件结束时,在它再次开始之前会有一秒钟的沉默。 但是,在mp3文件中,实际上,没有一秒钟的沉默 我怎样才能解决这个问题?你不能。这个bug已经存在很多年了,但是他们仍然没有修
MediaPlayer player = MediaPlayer.create(this, R.raw.background_music);
player.setLooping(true);
问题是它不能很好地“循环”:我的意思是,当mp3文件结束时,在它再次开始之前会有一秒钟的沉默。
但是,在mp3文件中,实际上,没有一秒钟的沉默
我怎样才能解决这个问题?你不能。这个bug已经存在很多年了,但是他们仍然没有修复它,而且看起来他们在不久的将来也不会这么做
您可以尝试使用SoundPool来播放音频文件(它循环得非常好,没有延迟,但是对于某些音频资源可能不合适) 下面是一些实现(删除弃用和适当关闭资源是一个家庭作业:)
从另一个角度看,如果MediaPlayer是必须拥有的,您可以查看方法setNextMediaPlayer。因此,我们的想法是为同一个文件初始化多个MediaPlayer(太乱了),并以智能方式设置它们。我同意bofredo android不支持免费音乐,仅支持5秒长的音频
SoundPool pool = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
afd = getResources().openRawResourceFd(audioResource);
pool.setOnLoadCompleteListener(new OnLoadCompleteListener() {
@Override
public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
if (0 == status) {
soundPool.play(sampleId, 1f, 1f, 10, -1 /* looping parameter */, 1f);
}
}
});
pool.load(afd, 10);
afd.close();