2016-05-14 10 views
0

文字列の音を演奏する音楽キーボードアプリケーションを実装しようとしています。ユーザーがキーを離すまでストリングサウンドを再生する必要があります。ボタンが離されるまでのサウンドサンプルを残してください。

私は、

MotionEvent.ACTION_DOWN

をSoundPoolを使用してサンプルをループの考えと1秒の小さなサンプルを使用して呼び出される

ACTION_UP

としてそれを停止しています。しかし、ループは機能していないようです。ユーザーがボタンを長押しし続けると仮定して「十分に長い」サウンドサンプルを置くことはできますが、それはアプリケーションの動作を望む方法ではありません。

どうすればよいですか?

答えて

1

は、このコードを試してみてください:のonCreate内部
を()

mp=MediaPlayer.create(MainActivity.this,R.raw.beep); 

b.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      if (event.getAction() == MotionEvent.ACTION_DOWN) { 
       mp.setLooping(true); 
       mp.start(); 
      } 

      if (event.getAction() == MotionEvent.ACTION_UP) { 
       mp.stop(); 
       mp=MediaPlayer.create(MainActivity.this,R.raw.beep); 
      } 
      return false; 
     } 
    }); 
+0

これは動作しますが、ループがスムーズではありません。 1秒間の正弦波サンプルを使用しました。サウンドが1つのループを終了して再び開始すると(つまり、各リピートの開始時に)、奇妙なクリック音が導入されます。 –

+0

あなたは私にそのオーディオを送信できますか...チェックしましょう –

+0

Generate - >トーン - >サイン、440Hz、振幅:1、時間:Audacityで1秒。私はあなたにサウンドファイルを送る方法を知らない –

関連する問題