【问题标题】:Playing multiple SoundPool at the same time同时播放多个 SoundPool
【发布时间】:2016-12-13 17:43:01
【问题描述】:

我有一个活动,我正在使用 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);
        }

【问题讨论】:

    标签: android android-mediaplayer soundpool


    【解决方案1】:

    您只需要一个SoundPool (sp1):

    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);
    ...
    

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

    int streamID = sp1.play(id1,1,1,1,0,1);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多