在android studio中按下时继续播放声音

时间:2018-03-16 18:06:05

标签: android piano

我有4个持续时间的声音。我想通过不停地按下来连续播放这个声音,就像按下时的钢琴键,它会播放声音而不会循环或停止。



{ ...state, ...state, ...{other props} }




1 个答案:

答案 0 :(得分:0)

button.setOnTouchListener(new View.OnTouchListener(){
  onTouch(View v, MotionEvent event){
     switch(getActionMasked()){
       case ACTION_BUTTON_PRESS:
        handler.removeCallbacksAndMessages(null);
        soundPool.stop(SID1_c);                                        
        SID1_c = soundPool.play(sound_c, 1, 1, 1, 0, 0);
        c.setBackgroundResource(R.drawable.key4);
        return true;

       case ACTION_BUTTON_RELEASE:
       handler.postDelayed(new Runnable() {
                                    @Override
                                    public void run() {
                                        soundPool.stop(SID1_c);
                                    }
                                },90);
       return false;
     }
     return false;
  }
});

您的代码问题: 如果你按两次按钮 当你开始发布延迟以停止第一个按钮的声音时,这个停止将按下第二个按下而不是之前停止的第一个按下 为了纠正这个问题,你应该在播放声音时退出处理程序 完成新的印刷后,您可以使用handler.removeCallbacksAndMessages(null);