Android MediaPlayer声音延迟

时间:2016-07-13 02:36:17

标签: java android audio android-mediaplayer

所以我正在使用Android MediaPlayer,我似乎遇到了一个非常奇怪的问题。我正在让MediaPlayer以减少的间隔播放声音。因此,随着时间的推移,每个声音之间的时间量会减少。有问题的声音长达0.05秒,声音之间的最短延迟为0.5秒。我有一个logcat显示延迟有多长的消息,并且每次打勾时它也会显示一条消息。但是,当应该播放每个节拍时,根据logcat,它会随机跳过一个节拍。在其他方面,它也会在一个乱七八糟的混乱中扮演一堆蜱虫。我不确定是什么导致了这一点,任何帮助表示赞赏。代码如下,如果需要,我可以发布logcat。

private Runnable timerRunnable = new Runnable() {
    @Override
    public void run() {
        long millis = System.currentTimeMillis() - startTime;
        int trueSeconds = (int) millis / 1000;
        double seconds = (double) (millis / 1000);
        int minutes = trueSeconds / 60;

        Log.d("Tick Timing", "Delay: " + delay);

        if(lastRun == 0)
            lastRun = System.currentTimeMillis();

        if((System.currentTimeMillis() - startTime) >50000)
            delay = 500;

        else if(System.currentTimeMillis() - lastRun > delay){
            lastRun = System.currentTimeMillis();

            delay /= 1.075;

            if(phaseOne) {
                Log.d("Tick Timing", "Tick One Played");
                tickOne.start();
                phaseOne = false;
            }

            else {
                Log.d("Tick Timing", "Tick Two Played");
                tickTwo.start();
                phaseOne = true;
            }
        }

        timerTextView.setText(minutes + ":" + seconds);

        timerHandler.postDelayed(this, 1);
    }
};`

1 个答案:

答案 0 :(得分:1)

问题似乎来自你给timerHandler.postDelay()方法的延迟值。

你给1毫秒,导致你的Runnable和声音启动得太快。

尝试使用500毫秒。