0

ボタンのクリックでサウンドを再生する MediaPlayer オブジェクトがあります。サウンド ファイルの長さは 1 ~ 2 秒です。対応するボタンを次々と (すばやく) クリックすると、サウンドが 2 回再生されません (一度だけ再生しています。次のようなコードで試しました:

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

それは仕事ではありません.たくさん検索しますが、うまくいく可能性があります.どんな助けでも!!!!

4

4 に答える 4

0

誰かがこれから助けを得ることができれば、やあみんな:

トリックで私の問題を解決するだけです(結局のところ、トリックはすべてを行うことができます:p)

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

soundPlayer = DrawSound.isPlaying() ? DrawSound1 : DrawSound;
soundPlayer.start();
于 2012-04-13T12:13:35.110 に答える
0

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

于 2012-04-13T09:29:00.743 に答える
0

これは、サウンドの再生が完了した後にメディア プレーヤーを解放していないためです ... Media Players Methodでの使用releaseと方法 ...resetsetOnCompletionListener

このように使用できます...

    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(); 
                }
            });

これは私にとってはうまくいきます。

于 2012-04-13T09:31:55.450 に答える
-1

これを試して、動作するかどうかを確認してください:

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

                @Override
                public void onPrepared(MediaPlayer mp) {
                    DrawSound.start(); 
                }
            });
            } 
于 2012-04-13T09:40:23.220 に答える