2012-04-13 8 views
0

私は、ボタンをクリックしてサウンドを再生しているMediaPlayerオブジェクトを持っています。サウンドファイルは1-2秒です。アンドロイドメディアプレイヤーがあまりにも速く再生されない

public void onClick(View view) { 
if(DrawSound.isPlaying()) { 
      DrawSound.stop(); 
     DrawSound.prepareAsync(); 
     } 
     DrawSound.start(); 
} 

それは多くのことをwokring.Searchはないが、それは助けるwork.Any作ることができる!!!!:)、それは二回音を再生していない(ちょうどonce.Iは、このようないくつかのコードを試してみました再生されています

+0

DrawSoundとは何ですか?また、slotDrawSoundとは何ですか? – Deva

+0

@Deva彼らは同じです。私は私の質問を編集しました。 –

答えて

0

やあみんな誰かがこのことから助けを得ることができた場合:

をちょうどトリックと私の問題を解決する(すべてのトリックの後にすべて行うことができます:p)を

私は2 MediaPlayerのオブジェクトと1つのMediaPlayerの参照を取り、次のように書いた:

soundPlayer = DrawSound.isPlaying() ? DrawSound1 : DrawSound; 
soundPlayer.start(); 
+0

と一緒に置くと、1つのオブジェクトでしか実行できません。 –

+0

本当に?どのように私は1つのオブジェクトだけでこれを行うことができますか? –

+0

ボタンのクリックイベントで私の答えからコードの2番目の部分を実装... –

0

prepareAsyncの代わりにprepareを使用してください。

+0

私はprepare()を使っていません。 –

0

その完成演奏サウンドた後、メディアプレーヤーをリリース... releaseとメディアプレーヤーsetOnCompletionListener方法でreset方法...

あなたはこのようにそれを使用することができます...

if(mp.isPlaying()) { 
        try { 
         mp.stop(); 
         mp.reset(); 
         mp.prepare(); 
        } catch (IllegalStateException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } catch (IOException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 
        } 
       mp.start(); 
} 

を使用するか、またはあなたはそれを使用することができます...

  mp.stop();   
      mp.prepareAsync(); 
      mp.setOnPreparedListener(new OnPreparedListener() { 

       @Override 
       public void onPrepared(MediaPlayer mp) { 
        mp.start(); 
       } 
      }); 

これは問題なく機能しています。

+0

私はリリースを使用してリセットを使用していますが、illegalargument例外が表示されています。 –

+0

再度同じMediaPlayerオブジェクトを使用する場合は、reset()を使用するだけでそれを解放しないでください。 –

+0

リセットを使用すると動作しません。 –

-1

これを試してみて、それが動作するかどうかを確認:

if(DrawSound.isPlaying()) {   
      DrawSound.stop();   
      DrawSound.prepareAsync(); 
      DrawSound.setOnPreparedListener(new OnPreparedListener() { 

       @Override 
       public void onPrepared(MediaPlayer mp) { 
        DrawSound.start(); 
       } 
      }); 
      } 
+0

IllegalArgument例外がスローされます。 –

+0

urの質問を編集して、関連するすべてのコードをlogcat – Deva

関連する問題