Java Android-无法正确停止声音池

Java Android-无法正确停止声音池,java,android,ontouchlistener,android-handler,soundpool,Java,Android,Ontouchlistener,Android Handler,Soundpool,> Handler HC1; int streamId; 在onCreate中我有 HC1 = new Handler(); public class MyTouchListene implements OnTouchListener { @Override public boolean onTouch(View v, MotionEvent event) { switch (v.getId()) { case R.id.C1:

>

Handler HC1;
int streamId;
在onCreate中我有

HC1 = new Handler();
public class MyTouchListene implements OnTouchListener {
    @Override
    public boolean onTouch(View v, MotionEvent event) {

        switch (v.getId()) {

            case R.id.C1:

                switch (event.getAction()) {

                    case MotionEvent.ACTION_DOWN:
                        streamId = sp.play(pianoSound[keyNumber], 1, 1, 0, 0, 1);
                        break;


                    case MotionEvent.ACTION_UP:

                        HC1.postDelayed(new Runnable() {
                            @Override
                            public void run() {
                                sp.stop(streamId);
                            }
                        }, 500);
                        break;
                }
                break;
        }
        return true;
    }

}
在onCreate之外的另一个班级,但在同一个活动中

HC1 = new Handler();
public class MyTouchListene implements OnTouchListener {
    @Override
    public boolean onTouch(View v, MotionEvent event) {

        switch (v.getId()) {

            case R.id.C1:

                switch (event.getAction()) {

                    case MotionEvent.ACTION_DOWN:
                        streamId = sp.play(pianoSound[keyNumber], 1, 1, 0, 0, 1);
                        break;


                    case MotionEvent.ACTION_UP:

                        HC1.postDelayed(new Runnable() {
                            @Override
                            public void run() {
                                sp.stop(streamId);
                            }
                        }, 500);
                        break;
                }
                break;
        }
        return true;
    }

}
我的问题是

我在soundpool中有6秒长的音频

当我按第一个音频按钮开始播放时,当我竖起手指时,音频在500毫秒后停止,如代码所述,但当我双击按钮时,相同的音频会启动两次(如我所愿),但第一个音频在500毫秒后停止,但第一个音频直到完成后才会停止。为什么?帮帮我

我想要这样的东西

若我在0毫秒时按下按钮,音频开始,然后在250毫秒时拿起手指,使音频在750毫秒时停止。。。 但如果我以0毫秒的速度按下按钮,以250毫秒的速度按下按钮,然后以250毫秒的速度再次按下按钮,以750毫秒的速度按下按钮,那么此时会播放两个音频,一个以750毫秒的速度停止,另一个以1250毫秒的速度停止

等待。。。 先谢谢你