在Android上使用SoundPool进行无缝循环?

kes*_*ton 12 audio android soundpool android-emulator android-mediaplayer

我试图用SoundPool类循环短(20kb),无间隙ogg文件,并且在硬件上测试时无法获得一致的结果.它总是使用模拟器完美播放,但是当我在Nexus 1或Samsumg Galaxy Tab 10.1上进行测试时,每个循环点都会有可听见的弹出或点击.非常奇怪的是,虽然一旦应用程序启动时一致,但每次重新启动应用程序时的点击次数会略有不同,并且在极少数情况下(平板电脑上更常见)循环正常播放.

使用MediaPlayer的结果并不好.想要在android上无间隙播放音频循环是不合理的吗?当然有人有类似的功能正常工作?如果是这样,我很想看到它如何运作的一个例子.

谢谢!

Beo*_*son 4

我使用了一个对单个文件运行良好的 hack:

HACK_loopTimer = new Timer();
HACK_loopTask = new TimerTask() {               
    @Override public void run() {
        mMediaPlayer.seekTo(0);
    }
};
long waitingTime = mMediaPlayer.getDuration()-mHackLoopingPreview;
HACK_loopTimer.schedule(HACK_loopTask, waitingTime, waitingTime);
Run Code Online (Sandbox Code Playgroud)

mHackLoopingPreview设置合理的数量即可;我用的是 100ms,效果很好。我必须承认,这是一个不太理想且丑陋的解决方案,但至少它起到了作用。