我正在编写一款安卓游戏,用于教孩子们数数。通过声音片段将指令读取到播放器,声音片段组合在一起形成句子(例如“Place”,“one”,“cow”,“in”,“barn”。这需要一定的可靠性,当它延迟时间使指令的流动听起来很自然。
目前我正在使用MediaPlayer,在OnCompletionListener中播放每个声音。每个声音都有它自己的MediaPlayer,它是在播放任何声音开始之前创建和准备的(以减少延迟) - 但是在每次声音播放之前我仍然会遇到很大的延迟(第二次似乎某种缓存有发生了,它工作正常)。
声音不是很多而且非常短,它应该可以更好地使用SoundPool,但SoundPool无法知道音频何时完成,因此无法选择。
有没有人有类似问题的经验和可行的解决方案?
答案 0 :(得分:0)
我已将handler
与OnCompletionListener
一起使用,我可以在两种声音之间进行延迟。
这样,
CommonMethod.player.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
// /will use count and loop as per number of
// repetition chosen.
handler.postDelayed(new Runnable() {
public void run() {
if (counter >= limit) {
CommonMethod.player.stop();
} else {
CommonMethod.player.start();
}
counter++;
}
}, 3000);
}
});