【问题标题】:How can I stop the MediaPlayer when Home key is pressed?按下 Home 键时如何停止 MediaPlayer?
【发布时间】:2016-05-31 08:00:48
【问题描述】:
  MediaPlayer player = MediaPlayer.create(context, R.raw.background);
  player.start();

上面的代码是当前代码的一部分。 当我按下 home 键时,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);
}

我已经实现了上面显示的代码,当您按下返回键时。 你认为上面的代码是正确的吗?感谢任何帮助。

【问题讨论】:

  • 您是否在活动中使用媒体播放器?如果是,您可以在 onPause() 方法中停止它
  • 你打电话给player.stop() - 停止播放器 - 你试过了吗?

标签: android android-mediaplayer


【解决方案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();

 }

【讨论】:

  • 确保释放您在销毁活动时创建的MediaPlayer 资源,方法是调用player.release() 并在onDestroy() 方法中取消MediaPlayer
【解决方案2】:

请尝试以下解决方案:

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

【讨论】:

    【解决方案3】:

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

    编辑:

    • 您的实现没问题,但它只覆盖了后退键。您还必须覆盖主页键才能在按下主页键时停止player。 (但是,当用户界面被隐藏时,请改用onStop()。)

    • 不要使用System.exit(),而是使用finish()

    • 如果您使用finish() 方法(这会破坏活动),请确保您已通过调用player.release() 并取消播放器来释放MediaPlayer 资源。 (即player = null

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-03
      • 1970-01-01
      • 2012-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多