【发布时间】:2014-01-21 01:50:23
【问题描述】:
在 Android 4.x 中,我的音频循环应用在声音循环中有 0.2 到 0.5 秒的间隔。
我正在使用 MediaPlayer,因为我的声音可能非常大(在某些情况下每个 2-3mb)并且它可以同时运行多个实例。
我对此进行了相当多的研究,发现 Android 4.x 存在一个错误......但是,我尝试了很多解决方法,但似乎都无法让它们工作。
- 使用 Audacity 将所有 wav 转换为 OGG(质量级别 2 到 10,没关系)
- 试过 setNextMediaPlayer()
- 尝试在停止和重复时使用 seekTo(0)
- 试过有自己的 bug 的 soundPool
这是我正在使用的代码示例:
public class SoundPlayer implements OnCompletionListener {
private MediaPlayer mp = null;
public void initPlayer() {
if(mp == null) {
mp = new MediaPlayer();
}
}
public void prepare(Context context, int resource) {
initPlayer();
try{
mp.reset();
Uri uri = Uri.parse("android.resource://com.myapp.app/"+resource);
mp.setDataSource(context,uri);
mp.prepare();
isPrepared = true;
mp.setOnCompletionListener(this);
} catch(Exception e) {
e.printStackTrace();
}
}
.......... etc (Uses typical MediaPlayer methods such as stop(), start(), setLooping(true)
}
我没有使用任何特殊的东西,所以我只是想知道是否有人知道解决 Android 上循环错误的方法。
【问题讨论】:
-
你的差距不是由加载和重新创建 MediaPlayer 对象的简单延迟引起的吗?
-
你在使用模拟器吗,我在模拟器上遇到了类似的问题,但是当我用实际设备尝试时 - 延迟消失了。
-
使用 GS3 设备而不是模拟器。确实感觉像滞后,但我该如何防止呢?
-
找到解决办法了吗