MediaPlayer中的声音延迟

时间:2018-04-21 15:00:43

标签: android android-mediaplayer

我有一个问题,或者更确切地说是一个问题。

我正在制作音乐播放器应用,可以在背景音乐播放期间使用按钮播放其他音效。我已经做到了,但点击按钮和播放声音之间的延迟比我想要的要大。

我在Stack上发现了一个使用SoundPool的提示,但我觉得使用soundPool和另一个MediaPlayer之间没有任何变化。不知道我是否做了所有的财产,这就是为什么我要问你们。

mediaPlayer = MediaPlayer.create(this, R.raw.music2);

soundPool = new SoundPool(1, AudioManager.STREAM_MUSIC, 100);
        HashMap<Integer, Integer> soundPoolMap;
        soundPoolMap = new HashMap<Integer, Integer>();
        soundPoolMap.put(1, soundPool.load(this, R.raw.plate, 1));

 public void playMusic (View w) {

    if(mediaPlayer.isPlaying())
    {
        mediaPlayer.pause();
        playBtn.setBackgroundResource(R.drawable.pause);

    }else {

        mediaPlayer.start();
        playBtn.setBackgroundResource(R.drawable.play);

    }
}

public void playDeep (View w) {

    if(mediaPlayer.isPlaying())
    {
        MediaPlayer mp = MediaPlayer.create(this, R.raw.deep);
        mp.start();
    }
}

public void playPlate (View w) {

    if(mediaPlayer.isPlaying())
    {
        soundPool.play(1, 1, 1, 1, 0, 0);
    }
}

1 个答案:

答案 0 :(得分:0)

你应该在后台播放空的 mp3(?)。
我使用以下代码播放了 1 小时的空 mp3,然后立即播放了 mp3。

public static void main(String[] args) {
    BasicPlayer player = new BasicPlayer();
    player.open(new File("emtpy 1h.mp3"));
    player.play();

    BasicPlayer realPlayer = new BasicPlayer();
    realPlayer.open(new File("i want to play it.mp3"));
    realPlayer.play();

    //...
}

我不知道它为什么有效,但它有效。