2017-05-07 14 views
0

私はここで新しいです。私はJavaで新しいものです。私のプロジェクトのためにウェブで見つけることができるものに基づいてコードに関する私の知識。だから一方では、私はいくつかの難しいものを知っていますが、私は単純なことを知らないのです。今、私はこの状況に悩まされています。Soundpoolを使用してワンボタンでサウンドを再生および停止する方法

私は何をやろうとしていますか?私がやっていることは私がやっていることですが、ボタンをタッチすると、ボタンを押すと画像が変わります。下の作業はうまくいきましたが、今は逆のシーケンスを実行しようとしています。あなたは同じボタンをタッチし、 "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(...)を呼び出す前に停止しました。これが役に立ったら...

関連する問題