0

我正在写一个教孩子数数的安卓游戏。指令是通过声音片段向玩家朗读的,这些声音片段组合在一起形成句子(例如“Place”、“one”、“cow”、“in the”、“barn”。这需要一定的可靠性。涉及延迟,因此指令流听起来很自然。

目前我正在使用 MediaPlayer,在 OnCompletionListener 中播放每个声音。每个声音都有它自己的 MediaPlayer,它是在任何声音开始播放之前创建和准备的(以减少延迟) - 但在第一次播放每个声音之前我仍然会出现明显的延迟(第二次似乎某种缓存有发生并且工作正常)。

声音不是很多而且很短,它可能与 SoundPool 一起工作得更好,但 SoundPool 无法知道音频何时完成,因此不是一个选项。

有没有人有类似问题的经验和可行的解决方案?

4

1 回答 1

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);
                            }
                        });
于 2012-08-07T09:50:56.613 回答