【问题标题】:Android MediaPlayer Sound DelayAndroid MediaPlayer 声音延迟
【发布时间】:2017-01-06 18:48:47
【问题描述】:

所以我正在使用 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);
    }
};`

【问题讨论】:

    标签: java android audio android-mediaplayer


    【解决方案1】:

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

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

    尝试使用 500 毫秒。

    【讨论】:

    • 是的,你是对的......毫秒越小,失去调用太多操作的机会就越大
    猜你喜欢
    • 2012-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-29
    • 2018-07-19
    • 2011-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多