2012-12-13 43 views
2

嗨,朋友我有一個Android媒體播放器的問題。它正在工作,但是當我改變屏幕方向時,用媒體播放器控制會丟失,最初我可以暫停和停止歌曲,但一旦屏幕方向改變,歌曲繼續播放,但我無法暫停或停止等。 這是我試過的代碼(我把原文件夾中的歌曲)如何維護android媒體播放器的mp.isPlaying()狀態?

setContentView(R.layout.activity_medial_player); 
     mp = new MediaPlayer(); 
playPause = (Button)findViewById(R.id.buttonPlay); 
     playPause.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if(mp.isPlaying()) { 
        if(mp!=null) { 
         System.out.println("*******"); 
         mp.pause(); 
        } 
       } else { 
        if(mp!=null) { 
         System.out.println("#######"); 
         mp.start(); 
        } 
       } 
      } 
     }); 

startSong= (Button)findViewById(R.id.buttonStart); 
     pause.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
//    mp.pause(); 
       playSong(); 
      } 
     }); 

stop = (Button)findViewById(R.id.buttonStop); 
     stop.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       mp.stop(); 
      } 
     }); 
} 


public void playSong() { 
     try { 
      mp.reset(); 
      mp = MediaPlayer.create(MedialPlayer.this, resId); 
      mp.start(); 
     } catch(Exception e) { 

     } 
    } 

清單中我使用:

android:configChanges="orientation|keyboard|keyboardHidden" 

任何幫助,請...

+0

檢查我的答案!它會工作。 – Shiv

回答

0

你是什麼級別的API ?

如果您的應用程序面向API級別13或更高(如通過中的minSdkVersion和targetSdkVersion屬性聲明),那麼你也應該申報「屏幕尺寸」的配置,因爲它也改變縱向和橫向之間當設備開關。

android:configChanges="orientation|screenSize|keyboard|keyboardHidden" 

來源:http://developer.android.com/guide/topics/manifest/activity-element.html

+0

嗨spanjeta感謝你的迴應,實際上我已經解決了它通過使用,保護無效onSaveInstanceState(Bundle outState)和保護無效onRestoreInstanceState(Bundle savedInstanceState)這兩個方法..現在它的工作proryrly ...而且我接受你的ur因爲它是正確的答案..稍後會檢查它,thnks – KKC

0
public void Play(View v){ 
     final MediaPlayer md = MediaPlayer.create(this,R.raw.test_cbr); 

    Button btn = (Button)findViewById(R.id.button2); 
    btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v){ 
      if(md.isPlaying()) 
        md.pause(); 

      else 
        md.start(); 
     } 

    } 
    ); 
}