2014-02-09 136 views
1

在我的一個活動中,有一個使用mediaPlayer播放音樂的按鈕。此外,它還可以選擇在後臺播放音樂或在活動結束時停止播放。在後臺停止MediaPlayer - Android

我爲此使用此代碼。

@Override 
protected void onStop() { 
    super.onStop(); 
    SharedPreferences perfs = PreferenceManager 
      .getDefaultSharedPreferences(getApplicationContext()); 
    if (!perfs.getBoolean("bg_play", true)) { 
     mediaPlayer.stop(); 
     mediaPlayer.release(); 
    } 
} 

完美的作品。現在問題出現在用戶重新開始活動並按下播放按鈕時,它啓動一個新的mediaPlayer並播放新的音樂。當新音樂開始時,我想要停止以前的音樂在後臺運行。

這裏是我的代碼

private void myMediaPlayer() { 
    if (mediaPlayer.isPlaying()) { 
     mediaPlayer.pause(); 
    } 
    else { 
      mediaPlayer.stop(); 
      mediaPlayer.reset(); 
     try { 
      mediaPlayer.setDataSource(Environment.getExternalStorageDirectory()+"file.mp3"); 
     } catch (IllegalArgumentException e) { 
      e.printStackTrace(); 
     } catch (IllegalStateException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     try { 
      mediaPlayer.prepare(); 
     } catch (IllegalStateException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     mediaPlayer.start(); 
    } 
} 

而且MediaPlayer的聲明

MediaPlayer mediaPlayer=new MediaPlayer(); 

onCreate

+0

我是初學者編程,所以我可能是錯的。 ..不會使mefiaPlayer變量靜態工作?但我認爲問題在於,當你回到活動中時,活動正在重建。 –

+0

@FtabHussain謝謝。它的作品 – Munawir

+0

酷!我將其添加爲答案。請不要忘記接受:) –

回答

0

之前,我是一個初學者到編程,所以我可能是錯的。 ..不會使mefiaPlayer變量靜態工作?但我認爲問題在於,當你回到活動中時,活動正在重建。

+0

當停止並重新啓動活動時,我做了它。我的活動播放與webview html文件相關的音樂。即file1.html播放file1.mp3。我可以檢查播放的音樂是否是與網絡視圖相關的音樂,返回到活動 – Munawir

+0

查看媒體播放器的獲取方法。總是有一個get方法:P(例如:mediaPlayer.get ...) –