2011-06-17 10 views

答えて

4

あなたは決してstop()と呼ぶことはありません。あなたのwhileループはstart()を何度も呼び出していますが、それを行うべきではありません。それを他のメディアプレーヤーと同じように考えてください。あなたは、トラック全体を聴くために継続的にプレイを押さないでください。

public boolean onTouch(View v, MotionEvent me) { 
    switch(me.getAction()) { 
     case MotionEvent.ACTION_DOWN: 
      if(!mpButton.isPlaying()) mpButton.start(); 
      break; 
     case MotionEvent.ACTION_UP: 
      if(mpButton.isPlaying()) mpButton.stop(); 
      break; 
    } 
} 

はEDIT:

ではなく、このような何か試してみてください余談として、MediaPlayerのmpButtonに名前を付けることがちょうどラインの下の混乱を求めているが、言ってるだけ'。

Boolean btnIsPressed = false; 
Button btn = (Button) findViewById(R.id.btn); 

をしてスレッドを追加し、メソッドの実行中にこのコードを追加します:;)

+1

+1を何かを繰り返しする方法について話している場合。 – FoamyGuy

+0

クラスhello extendsスレッド{ \t public void run(){ \t \tブールbtnIsPressed = false; \t \t while(!btnIsPressed){ \t \t \t mpButton.start(); } \t \t \t}} 最終ハローP =新しいハロー()。 buttonsound.setOnTouchListener(新View.OnTouchListener(){ \t \t公共ブールonTouch(ビューVは、私をMotionEvent){ \t \t \t \t \t \t btnIsPressed =真; \t \t \t \t \t \t \t \t false false; \t} }); – sudhaman

+0

なぜこのコメントを投稿しましたか? – kcoppock

0

がhiあなたはこのような何かを行うことができます

@Override 
public void run(){ 
     while(!btnIsPressed){ 
      myfunction(); 
     } 
} 

最後に、あなたの方法のonCreateで、追加をあなたのブール値をtrueの値に変更するリスナー:

btn.addOnClickListener(new OnClickListener(){ 

    @Overrride 
    public void onClick(View v){ 
     btnIsPressed = true; 
    } 
}); 

希望します

+0

btnIsPressedはontouchリスナーメソッドでは機能しません。このメソッドの最後の変数ではないことを示しています。 – sudhaman

+0

@sudhman:ボタンを押したり、タッチしたりしないようにするためにOnClickListenerを設定しました。onTouchListenerが必要な場合はonTouchListenerを追加して試してください。 エラー:非fnal変数を参照することはできません、あなたのコードを追加し、私たちはそれを解決しますので、その方法です:runOnUIThread()最終変数が必要です。それで全部です – Houcine

0

あなたはメディアプレーヤでノート脇のためだけ

mediaPlayer.seekTo(0); 
mediaPlayer.start(); 
関連する問題