带有 soundpool 的循环轨道

Posted

技术标签:

【中文标题】带有 soundpool 的循环轨道【英文标题】:Looping track with soundpool 【发布时间】:2012-08-21 03:15:02 【问题描述】:

我需要在我的应用程序中循环播放音乐而不滞后。在 android 4.0 中,相同的代码无法在没有重要延迟的情况下循环。

所以我尝试使用 SoundPool。如果我使用

int NO_LOOP=0;
sp.play(ID, 1, 1, 0, NO_LOOP, 1);

声音播放没有问题,但如果我使用

int LOOP=-1;
sp.play(ID, 1, 1, 0, LOOP, 1);

它不起作用并出现此消息:

08-21 05:12:48.243: E/AudioTrack(15035): AudioFlinger could not create track, status: -12
08-21 05:12:48.243: E/SoundPool(15035): Error creating AudioTrack

怎么了?我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

为了进行无间隙循环,您必须使用小于 1mb 的 WAV 文件。否则,循环播放的 -1 设置将导致您的文件无法播放。

这行得通,刚刚测试过。

【讨论】:

那么,我怎样才能无间隙播放超过 1mb 的声音呢?我不敢相信没有办法…… 有一种方法可以使用 MediaPlayer 类。

以上是关于带有 soundpool 的循环轨道的主要内容,如果未能解决你的问题,请参考以下文章

使用 SoundPool 的无缝循环

设置类似于 SoundPool.setPriority 的 AudioTrack 优先级

Soundpool 没有在 android 4.3 中循环

带循环的 Soundpool 无法正常工作

Android,Soundpool 类 - 循环声音时出现自动暂停问题

SoundPool 和 MediaPlayer 在一段时间后循环播放的哔声停止