Android 同时播放多个声音池

Android 同时播放多个声音池,android,android-mediaplayer,soundpool,Android,Android Mediaplayer,Soundpool,我有一个活动,我正在使用12个按钮,不同的声音在他们。如果用户同时单击两个按钮,则应同时播放按钮 当我使用MediaPlayer时,我无法做到这一点,然后我学习了SoundPool,一切都很好。但是有12种不同的声音,我不得不写这么多行,我认为这不是正确的方法 这是正确的方法吗,当我写12个音的时候,它变得太长了 SoundPool sp1,sp2,sp3; int id1,id2,id3; @Override protected void onCreate(Bundle savedI

我有一个活动,我正在使用12个按钮,不同的声音在他们。如果用户同时单击两个按钮,则应同时播放按钮

当我使用
MediaPlayer
时,我无法做到这一点,然后我学习了
SoundPool
,一切都很好。但是有12种不同的声音,我不得不写这么多行,我认为这不是正确的方法

这是正确的方法吗,当我写12个音的时候,它变得太长了

SoundPool sp1,sp2,sp3;
int id1,id2,id3;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.piano);

sp1 = new SoundPool(1, AudioManager.STREAM_MUSIC,1);
        sp2 = new SoundPool(1, AudioManager.STREAM_MUSIC,1);
        sp3 = new SoundPool(1, AudioManager.STREAM_MUSIC,1);

id1 = sp1.load(this,R.raw.p1,1);
        id2 = sp2.load(this,R.raw.p2,1);
        id3 = sp3.load(this,R.raw.p3,1);

}

public void p1Click(View v)
        {
            sp1.play(id1,1,1,1,0,1);
        }

public void p2Click(View v)
        {
            sp2.play(id1,1,1,1,0,1);
        }

public void p3Click(View v)
        {
            sp3.play(id1,1,1,1,0,1);
        }

您只需要一个
SoundPool
sp1
):

(1) 注意12表示您可以同时播放12种声音。
(2) 请注意,请跟踪您的活动声音,这将在以后很有用。(
sp1.play
返回一个整数):

sp1 = new SoundPool(12, AudioManager.STREAM_MUSIC,1);
id1 = sp1.load(this,R.raw.p1,1);
id2 = sp1.load(this,R.raw.p2,1);
...
sp1.play(id1,1,1,1,0,1);
sp1.play(id2,1,1,1,0,1);
...
int streamID = sp1.play(id1,1,1,1,0,1);