【问题标题】:How to stop a Mediaplayer when i press Home, BUT not in an other activity当我按主页时如何停止媒体播放器,但不在其他活动中
【发布时间】:2015-03-22 12:15:44
【问题描述】:

首先,对不起我的英语不好 使用我的代码,我可以在按下主页按钮时停止 Mediaplayer,但我也可以在“打开”其他活动时停止它。 然后,我只想知道当我按下 Home 按钮时是否可以停止 Mediaplayer(我的代码中的 mpFond),而不是当我打开其他活动时。

这是我的代码:

private MediaPlayer mpFond;

public void onCreate(Bundle savedInstanceState) {
//some code

        mpFond = MediaPlayer.create(AccueilActivity.this,R.raw.accueil);    
        mpFond.setAudioStreamType(AudioManager.STREAM_MUSIC);
        mpFond.setLooping(true);
        mpFond.start();

        // "definition" des boutons
    Button play = (Button) findViewById(R.id.play);

    //some code

    play.setOnClickListener(new View.OnClickListener() { // LE BOUTON JOUER

        @Override
        public void onClick(View v) {
            AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
            //Lorsqu'on clique sur "JOUER" 
            mp = MediaPlayer.create(AccueilActivity.this,R.raw.bruit);
            mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
            //if silent mode
            switch (am.getRingerMode()) {
            case AudioManager.RINGER_MODE_SILENT:
                mp.setVolume(0,0);
                break;
            }
            //demarrage du son
            mp.start();

            Intent intent = new Intent(app, MainActivity.class);
            startActivity(intent);
        }

    });
//some code
}

//some code

@Override
public void onPause()
{
   super.onPause();
   if(mpFond.isPlaying()){
   mpFond.pause();
   }

}

@Override
public void onStop()
{
   super.onStop();
  if(mpFond.isPlaying()){
    mpFond.stop();
  }
}

【问题讨论】:

  • 你的意思是当你将它从音乐活动切换到另一个活动时你不想停止它?
  • 我没有音乐活动,我在这个活动中启动了我的媒体播放器 mpFond(这就像一个带有“播放”“退出”“关于”等按钮的“欢迎活动”),我想要它即使我按“PLAY”也会继续(所以,即使我改变了我的活动)
  • 没有 onPause() 和 onStop(),当我按下“播放”时它会继续,但是当我按下设备主页按钮时它也会继续:(这是我的问题...
  • 您的意思是在应用程序中,您继续播放音乐;退出应用,停止音乐?
  • 是的,在应用程序中,即使我更改活动,我也会继续播放音乐,而退出应用程序,我会停止。

标签: android button android-intent android-activity media-player


【解决方案1】:

现在一切正常。刚刚找到了这样做的方法:

@Override
public void onPause()
{
   super.onPause();
   if(mpFond.isPlaying()this.isFinishing()){
   mpFond.pause();
}

}

 @Override
public void onStop()
{
   super.onStop();
  if(this.isFinishing(){
    mpFond.stop();
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-11
    • 1970-01-01
    • 1970-01-01
    • 2016-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多