Soundpool Handler问题(无法保持速度)

时间:2017-07-30 12:36:24

标签: android performance handler soundpool

我一直在尝试使用soundpool在Android中创建一个简单的节拍器应用程序,但是,我注意到在较高的BPM值下,声音延迟不一致。有时两次节拍之间的滞后高于预期,有时根本没有滞后(双节拍)。

player = new SoundPool.Builder()
            .setAudioAttributes(new AudioAttributes.Builder()
                    .setUsage(AudioAttributes.USAGE_MEDIA)
                    .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
                    .build())
            .setMaxStreams(1)
            .build();
    tick = player.load(this, R.raw.tick_6mil, 1);
    player.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
        @Override
        public void onLoadComplete(SoundPool soundPool, int i, int i1) {
            setupHandler();
        }
    });


//Running at 360BPM (~166.67ms per beat)
public void setupHandler(){
    r = new Runnable() {
        @Override
        public void run() {
            handler.postDelayed(this, 167);
            player.play(tick, 1, 1, 10, 0, 1);
        }
    };
    handler.postDelayed(r, 167);
}

我不知道除了具有不一致开销的soundpool播放调用之外,这里的问题是什么,这是我无法解决的问题。任何帮助/见解将不胜感激。

0 个答案:

没有答案