2017-05-07 13 views
0

저는 여기에 새로운 사람이고 저는 자바에서 새로운 사람입니다. 내 프로젝트에서 웹에서 찾을 수있는 것을 기반으로하는 코드에 대한 모든 지식. 그래서 한 손에는 어려운 일을 압니다. 나는 간단한 것을 모릅니다. 지금 나는이 상황에 처해있다.Soundpool을 사용하여 하나의 버튼으로 소리를 재생하고 멈추는 방법

내가하려고하는 루프 사운드가있는 버튼이 있습니다. 버튼을 터치하면 버튼을 눌렀을 때 "button_prees"에 이미지가 변경되어야합니다. "button_on"에서 사운드와 이미지를 재생해야합니다. 아래에서 잘 작동하지만 지금은 역순으로 작업하려고합니다. 동일한 버튼을 터치하면 "button_prees2"의 이미지가 변경됩니다. 버튼을 놓을 때 "button_off"에서 사운드 재생 및 이미지 변경을 중지해야합니다.

어떻게이 코드를 아래 코드에 구현합니까?

final Button b1 = (Button) findViewById(R.id.button1); 
     b1.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View view, MotionEvent motionEvent) { 
       switch (motionEvent.getAction()){ 
        case MotionEvent.ACTION_DOWN: 


         b1.setBackgroundResource(R.drawable.button_prees); 

         break; 

        case MotionEvent.ACTION_MOVE: 

         break; 

        case MotionEvent.ACTION_UP: 


         myS.play(s1I, 1, 1, 1, -1, 1); 

         b1.setBackgroundResource(R.drawable.button_on); 

         break; 
       } 
       return true; 
      } 
     }); 

답변

0

버튼 상태의 플래그로 부울을 사용할 수 있습니다. 기본적으로 아주 짧게 :

boolean soundsOn = false; 
public void setSoundsOn(boolean soundsOn){ 
    this.soundsOn = soundsOn; 
} 

public boolean isSoundsOn(){ 
    return soundsOn; 
} 
... 

// Then for your Button listener: 
onTouch(...) 
if (!isSoundsOn){ 
    // Your above above code to change resources, start playing 
    // EXCEPT 
    case MotionEvent.ACTION_UP: 
    ... 
    setSoundsOn(true); 
    ... 
}else{ 
    // Code to stop etc. 
    // INCLUDING 
    case MotionEvent.ACTION_UP: 
    ... 
    setSoundsOn(false); 
    ... 
} 
... 

가 이상적으로 확실 사운드가 성공적으로 시작해야는 /하지 무슨 말을 끝낼 수 있습니다 그렇지 않으면 라벨을 setSoundsOn(...)를 호출하기 전에 중단했다. 희망이 도움이 ...