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毫秒的速度停止
等待。。。
先谢谢你