Android 媒体播放器与 CountDownTimer 卡顿

Android Media Player Stuttering with CountDownTimer

我正在尝试制作一个应用程序来教别人如何数音乐。媒体播放器初始化为持续 A 音符的 30 秒声音剪辑。我正在使用倒数计时器告诉我的媒体播放器何时暂停和播放。下面的代码导致音频的第一秒和最后一秒断断续续。

MediaPlayer myMediaPlayer = MediaPlayer.create(MusicCounting.this, R.raw.a_note);
CountDownTimer time = new CountDownTimer(4000,500) {
    @Override
    public void onTick(long millisUntilFinished) {
        if(myMediaPlayer.isPlaying()) {
            myMediaPlayer.pause();
        } else {
            myMediaPlayer.start();
        }
    }

    @Override
    public void onFinish() {
        myMediaPlayer.pause();
        myMediaPlayer.seekTo(0);
    }
};

time.start();

此代码用于四分音符,我的八分音符代码看起来相同,只是倒数计时器的第二个参数是 250。如有任何建议,我们将不胜感激。谢谢 :)

有很多关于 Android MediaPlayer 卡顿的报告,可以通过各种方法尝试修复它。这似乎是最相关的问题:

  • MediaPlayer stutters at start of mp3 playback

但是,AudioTrack 可能更适合您只想演奏特定音符的特定情况。参见:

  • Playing an arbitrary tone with Android