我的媒体播放器没有很好地“循环”

时间:2013-02-22 11:38:27

标签: android

我有一个扩展服务的课程,我有一个MediaPlayer来管理我的应用程序的背景音乐。

MediaPlayer player = MediaPlayer.create(this, R.raw.background_music);
player.setLooping(true); 

问题是它没有“循环”好:我的意思是,当mp3文件结束时,在它再次启动之前会有一秒钟的静音。 但是,在mp3文件中,实际上,没有任何第二个沉默。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

你做不到。这个bug现在已存在多年了,但它们仍然无法修复它,看起来它们不会在不久的将来实现它!

http://code.google.com/p/android/issues/detail?id=18756

答案 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(多么糟糕)并以智能方式设置它们。