2017-09-13 83 views
0

我試圖停止音樂時,用戶離開應用程序或點擊(home鍵),我的應用程序播放音樂,即使它是在後臺,我怎麼可以停止音樂,如果用戶單擊主頁按鈕?如果用戶返回,音樂將再次播放? 我的代碼:如何停止音樂,如果在後臺應用程序

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.vaporv2); 
    if(!mediaPlayer.isPlaying()){ 
     mediaPlayer.start(); 
    } 
    mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
     public void onCompletion(MediaPlayer mp) { 
      mediaPlayer.start(); 
     } 
    }); 
//toggle off and on : 
    MusicButton = (ToggleButton) findViewById(R.id.toggleButton); 
    MusicButton.setOnCheckedChangeListener(new OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
      if (MusicButton.isChecked() && mediaPlayer.isPlaying()) { 
       mediaPlayer.pause(); 

      } else { 
       mediaPlayer.start(); 
      } 
     } 
    }); 

回答

0

在你的活動:

檢查兩種狀態:

在暫停狀態:當按下恢復狀態home鍵

@Override 
    protected void onPause() { 
     super.onPause(); 
     if(mediaPlayer!=null && mediaPlayer.isPlaying()){ 
      mediaPlayer.pause(); 
     } 
    } 

當你回到你的屏幕

@Override 
    protected void onResume() { 
     super.onResume(); 
     if(mediaPlayer!=null && !mediaPlayer.isPlaying()){ 
      mediaPlayer.start(); 
     } 
    } 
0

既然你在活動中,您可以覆蓋onResumeonStop方法
,然後播放/暫停您的應用程序。

 @Override 
     protected void onResume() { 
      super.onResume(); 
     if(!mediaPlayer.isPlaying()){ 
      mediaPlayer.start(); 
     } 
     } 

     @Override 
     protected void onStop() { 
      super.onStop(); 
     mediaPlayer.pause(); 
     } 
+0

這種行爲通常是* *對稱。這意味着它們在相反的生命週期事件中執行。你在'onResume'開始做什麼?停在'onPause'上。你在'onStop'上停止了什麼嗎?你應該啓動它在'onStart' – Pelocho

+0

'我試圖停止音樂時,用戶離開應用程序或點擊(home鍵),我的應用程序播放音樂,即使它是在後臺,我怎麼可以停止音樂,如果用戶點擊主頁按鈕?如果用戶返回時,音樂播放again'-這就是OP問我根據它雖然可能不是實際的功能性回答。 –

相關問題