按Home键时如何停止MediaPlayer?

时间:2016-05-31 08:00:48

标签: android android-mediaplayer

  MediaPlayer player = MediaPlayer.create(context, R.raw.background);
  player.start();

上面的代码是当前代码的一部分。 当我按下主页键时,MediaPlayer不会停止播放。

@Override
public boolean onKeyDown(int KeyCode, KeyEvent event)
{
    if (event.getAction() == KeyEvent.ACTION_DOWN) {
        if (KeyCode == KeyEvent.KEYCODE_BACK) {
            System.exit(0);
            return true;
        }
    }
    return super.onKeyDown(KeyCode, event);
}

我按下后退键时实现了上面显示的代码。 你认为上面的代码是否正确?感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

为此实现以下方法,

 @Override
 protected void onPause() {
      super.onPause();

      if(player != null)
             player.stop();
 }

 @Override
 protected void onStop() {
      super.onStop();

      if(player != null)
             player.stop();

 }

 @Override
 protected void onDestroy() {
      super.onDestroy();

      if(player != null)
             player.stop();

 }

答案 1 :(得分:1)

请尝试使用此解决方案:

public class PlayaudioActivity extends Activity {

    private MediaPlayer mp;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button b = (Button) findViewById(R.id.button1);
        Button b2 = (Button) findViewById(R.id.button2);
        final TextView t = (TextView) findViewById(R.id.textView1);

        b.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                stopPlaying();
                mp = MediaPlayer.create(PlayaudioActivity.this, R.raw.far);
                mp.start();
            }

        });

        b2.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                stopPlaying();
                mp = MediaPlayer.create(PlayaudioActivity.this, R.raw.beet);
                mp.start();
            }
        });
    }

    private void stopPlaying() {
        if (mp != null) {
            mp.stop();
            mp.release();
            mp = null;
       }
    }
}

有关详情,请阅读以下文章:Android MediaPlayer Stop and Play

答案 2 :(得分:0)

如果您的媒体播放器正在运行您创建的活动,则可以使用player.stop()方法拨打onStop()

编辑:

  • 您的实现没问题,但它只会覆盖后退键。您还必须覆盖主页键以在按主页键时停止player。 (但是,当隐藏用户界面时,请使用onStop()代替它。)

  • 请勿使用System.exit(),而是使用finish()

  • 如果您使用finish()方法(销毁活动),请确保通过调用MediaPlayer释放player.release()资源并使播放器无效。 (即player = null