2012-01-16 9 views
-1

私はアクティビティにボタンを持っています。私はそれを押したときにサウンドが再生されます。音そのものは2秒です。そして、それは私がボタンを押すときにのみ再生されます。私は、ユーザーがボタンを押したままにし、ボタンを離すまでサウンドを再生できるようにしたいと考えています。これどうやってするの?ここに私の現在のコードがあります。複数回押すことなく繰り返し音を出すことができます(アンドロイド)

package android.app; 
import android.app.R; 
import android.app.Activity; 
import android.content.Intent; 
import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 



public class activity2 extends Activity{ 

    /** Called when the activity is first created. */ 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
    setContentView(R.layout.main2); 
//back button that takes u to main.xml 
    Button next = (Button) findViewById(R.id.Back); 
    next.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
     Intent intent = new Intent(); 
     setResult(RESULT_OK, intent); 
     finish(); 
     } 
     }); 
    //Button that plays sound (whippingsound) 
    Button sound = (Button) findViewById(R.id.sound); 
     sound.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 
       MediaPlayer mp = MediaPlayer.create(activity2.this, R.raw.whippingsound); 
       mp.start(); 
      } 
     }); 

    } 
} 

ありがとうございます!

+0

可能な重複:http://stackoverflow.com/questions/5253371/play-sound-while-button-is-pressed-android – Max

+0

なし...本当に – user1148715

答えて

2

あなたの問題を解決するには、

Triggering event when Button is pressed down in Android

play sound while button is pressed -androidの組み合わせです。

つまり、onTouchListenerの代わりにonClickListenerを使用しています。

代わりにこれを試してください(注:メディアプレーヤーを一度作成して繰り返し使用するように移動しました)。

public class activity2 extends Activity{ 
     MediaPlayer mp = null; 

     /** Called when the activity is first created. */ 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
     setContentView(R.layout.main2); 
    //back button that takes u to main.xml 
     Button next = (Button) findViewById(R.id.Back); 
     next.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View view) { 
      Intent intent = new Intent(); 
      setResult(RESULT_OK, intent); 
      finish(); 
      } 
      }); 
     mp = MediaPlayer.create(activity2.this, R.raw.whippingsound); 
     //Button that plays sound (whippingsound) 
     Button sound = (Button) findViewById(R.id.sound); 
      sound.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 

      switch (event.getAction()) { 

      case MotionEvent.ACTION_DOWN: 
       mp.setLooping(true); 
       mp.start(); 
       break; 

      case MotionEvent.ACTION_UP: 
       mp.pause(); 
       break; 
      } 

      return true; 
     } 
    }); 
    } 
+0

イムを取得 - OnTouchListenerはに解決することはできませんタイプ \t - タイプViewのメソッドsetOnTouchListener(View.OnTouchListener)は、引数には適用されません(new \t OnTouchListener(){}) – user1148715

+0

私を助けますか?私はコードを更新しました... – user1148715

+0

私はコードを更新しました - View.OnTouchListenerで試してください(OnTouchListenerインターフェイスはViewクラスで定義されています)。 –

関連する問題