1

我正在创建一个有音频的应用程序。我设法做音频。然后我意识到当我使用返回和主页按钮退出应用程序时,音频不会停止。因此我试图插入 2 种不同类型的代码。首先

    @Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_HOME && event.getRepeatCount() == 0) {
        // do something on back.
        mp.stop();
       this.finish();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

第二:

    @Override       
    protected void onStop() 
    {
        super.onStop();
        // This above line closes the app correctly
       android.os.Process.killProcess(android.os.Process.myPid());
    }

但不幸的是,当我单击按钮时,所有这些代码都会使我的应用程序崩溃。我检查了我的应用程序只有在没有上面这些代码的情况下才能正常工作。或者有没有其他方法可以设置我的媒体播放器在android检测到用户退出应用程序时停止。请帮忙?

4

4 回答 4

1

您可以在 onStop() 方法中执行此操作,然后在 mediaPlayer 上调用 stop() 使用 isPlaying() 方法检查它当前是否正在播放或检查 mp 是否为空。

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

         if (mp.isPLaying()) {
              mp.reset();
          mp.release();
          mp = null;
     }   
    }

这将停止您的 mediaPlayer。

于 2012-11-07T01:57:13.203 回答
0

如果您想要停止音频,则只需调用MediaPlayer#stop()MediaPlayer#release()在活动的 onStop 中。

于 2012-11-07T07:39:20.263 回答
0

只需使用 . 终止活动finish()。它将停止与活动相关的所有进程。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_HOME && event.getRepeatCount() == 0) {
        // do something on back.
       this.finish();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

如果问题仍然存在,那么您可能需要发布您的 logcat。

于 2012-11-07T06:31:17.203 回答
-1

我这样做的方式是在 on Pause 方法上启动一个计时器。我将计时器设置为 0.5 秒或类似的时间。如果在计时器到期之前调用 on resume 方法,那么我将取消它(这意味着我们正在从一个活动转到另一个活动)如果计时器到期,那么我将停止音乐。这意味着活动在家里希望这会有所帮助。不是最干净的解决方案,但我发现它是最少的工作,不需要新的权限

于 2012-11-07T01:49:54.507 回答