2012-01-23 35 views
3

android.media.mediaplayerの2つのクラスラッパーを作成しました。Android MediaPlayer.stop()は停止する代わりに一時停止します

私は工場のMediaPlayer.Create()からオブジェクトを使用する場合。メソッド停止が呼び出されると、メディアプレイヤーオブジェクトは曲を停止します(これは、play()を呼び出すときに曲を停止するので、曲の先頭から開始します)。しかし、私がデフォルトのコンストラクタを使用すると、stop()は、実際には停止状態にあることを除いて、以前の位置を保つpause()とまったく同じように動作します。

prepare()とstop()の後にseekTo(0)を使用して、私がしたいことをする必要がありましたが、これはドキュメントの内容とは異なります。

ます。public voidスタートを()以降:APIレベル1

開始または再生を再開します。再生が以前に一時停止されていた場合は、一時停止した場所から再生が続行されます( )。再生が 停止した場合、または以前に開始されなかった場合、再生は の先頭から開始されます。

したがって、停止時にstart()を呼び出すと、最初から開始する必要があります。

これは私のクラスからstopSongメソッドのコードです:この出来事はなぜ

public void stopSong() { 
    if(mpPrepared){ 
     mp.stop(); 
     try { 
      mp.prepare(); 
     } catch (IllegalStateException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     mp.seekTo(0); 
    } 
} 

誰かが私に教えてもらえますか?ありがとう!

答えて

0
if(mp.isPlaying){ 

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

希望このヘルプ

+0

私はそれをテストしたが、それでもただ一時停止します。条件を変更するとstop()の動作がどのように変わるのか分かりません。とにかくありがとう。 –

+0

私は全体のコードを見ることができますか? – Intathep

関連する問題