Android MediaPlayer中的声音延迟

Android MediaPlayer中的声音延迟,android,android-mediaplayer,Android,Android Mediaplayer,我有个问题,或者说是个问题 我正在制作一个音乐播放器应用程序,它可以在后台播放音乐时使用按钮播放额外的声音效果。我已经这样做了,但是点击按钮和播放声音之间的延迟比我希望的要大 我在Stack上找到了使用SoundPool的技巧,但我觉得使用SoundPool和另一个MediaPlayer之间没有任何变化。我不知道我做的每件事是否都很好,这就是为什么我要问你们 mediaPlayer = MediaPlayer.create(this, R.raw.music2); soundPool = ne

我有个问题,或者说是个问题

我正在制作一个音乐播放器应用程序,它可以在后台播放音乐时使用按钮播放额外的声音效果。我已经这样做了,但是点击按钮和播放声音之间的延迟比我希望的要大

我在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);
    }
}
mediaPlayer=mediaPlayer.create(this,R.raw.music2);
soundPool=新的soundPool(1,AudioManager.STREAM_MUSIC,100);
HashMap-soundPoolMap;
soundPoolMap=新HashMap();
soundPoolMap.put(1,soundPool.load(这个,R.raw.plate,1));
公共音乐(视图w){
if(mediaPlayer.isPlaying())
{
mediaPlayer.pause();
playBtn.setBackgroundResource(R.drawable.pause);
}否则{
mediaPlayer.start();
playBtn.setBackgroundResource(R.drawable.play);
}
}
公共空间playDeep(视图w){
if(mediaPlayer.isPlaying())
{
MediaPlayer mp=MediaPlayer.create(this,R.raw.deep);
mp.start();
}
}
公共空隙播放板(视图w){
if(mediaPlayer.isPlaying())
{
声音池。播放(1,1,1,1,0,0);
}
}

您应该在后台播放空mp3(?。
我用下面的代码播放了一个小时的空mp3,然后立即播放了mp3

publicstaticvoidmain(字符串[]args){
BasicLayer player=新BasicLayer();
打开(新文件(“emtpy 1h.mp3”);
player.play();
BasicLayer realPlayer=新BasicLayer();
打开(新文件(“我想播放它.mp3”);
realPlayer.play();
//...
}

我不知道为什么它能工作,但它能工作。

你解决了吗?不是真的,我所能做的就是尽可能地减少声音,但声音延迟仍然存在。这也不是一个借记卡问题,因为我在几部可用的手机上检查了它,或多或少的问题仍然存在。可能我找到了API24+stackoverflow.com/a/42582893/7449805的解决方案