我有一个扩展服务的课程,我有一个MediaPlayer来管理我的应用程序的背景音乐。
MediaPlayer player = MediaPlayer.create(this, R.raw.background_music);
player.setLooping(true);
问题是它没有“循环”好:我的意思是,当mp3文件结束时,在它再次启动之前会有一秒钟的静音。 但是,在mp3文件中,实际上,没有任何第二个沉默。
我该如何解决这个问题?
答案 0 :(得分:3)
你做不到。这个bug现在已存在多年了,但它们仍然无法修复它,看起来它们不会在不久的将来实现它!
答案 1 :(得分:0)
您可以尝试使用SoundPool播放音频文件(它可以很好地循环播放,但不会延迟,但可能不适合某些音频资源)。
这是某种实现(弃用删除和资源的适当关闭留作作业:))
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();
如果必须拥有MediaPlayer,则从另一方面可以查看方法 setNextMediaPlayer 。因此,我们的想法是为同一个文件初始化几个MediaPlayers(多么糟糕)并以智能方式设置它们。