4

あなたが何らかのガイダンスを提供できることを願っています。mediaplayer (mp1) の「最終」インスタンスを作成し、ボタンをクリックすると mp3 ファイルが再生されます。次に、2 番目のボタンをクリックしたときにファイルを停止する必要があります。ファイルをもう一度再生しようとするまで、これは正常に機能します-何も起こりません。mp1 インスタンスは「最終」であるため、停止すると、アプリを再起動するまで完全に停止すると思います。ファイルを一時停止したくありません。停止してから、もう一度やり直したいのです。どんなアイデアでも大歓迎です。ボタン内にmp1作成を入れてみました。これは、アプリがクラッシュするまで機能していました。おそらく、複数のメディアプレーヤーの作成がデバイスのメモリをすべて使用したためでしょうか?

ありがとう!!!

// const mediaplayer
mp1 = MediaPlayer.create(getApplicationContext(), R.raw.mysound);

...

// in button 1
if (radSound1.isChecked()) {
               radSound2.setChecked(false); // ...set radiobutton 2 to false
                mp1.start();                 // ...play the mp3 file
               }

...


// in button 2
if (mp1 != null){
                  mp1.reset();
                   //mp1.setDataSource();
                   // mp1.prepare(); 
              }
4

1 に答える 1

12

こちらの状態図に従ってください。stop()再生を停止し、停止状態になります。次回のプレイを開始する前に、コールprepare()してからstart()もう一度コールする必要があります。

したがって、ボタン 1 では を呼び出しstart()、ボタン 2 では と を呼び出す必要がstop()ありprepare()ます。初期化は問題ありません。一度実行して、ボタンの外に置いてください。

このような質問への回答も受け付けます。これにより、私のような人々が今後回答する意欲が高まります。

于 2012-07-18T03:50:07.460 に答える