2017-09-13 84 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问我根据它虽然可能不是实际的功能性回答。 –

相关问题