1

首先 - 对不起我的英语。

我刚刚创建了 Android 应用程序。它包含几个活动,并在此应用程序的背景中播放音乐。当用户以某种方式(通过单击“返回”按钮、主页按钮或其他方式)从应用程序中退出时,我需要停止播放音乐。问题是如何处理这一刻。我不知道怎么做。

请帮帮我,CD

4

4 回答 4

1

您可以使用以下命令检查应用程序何时处于后台:

1.

   public boolean isApplicationSentToBackground(final Context context) {
    try {
        ActivityManager am = (ActivityManager) context
                .getSystemService(Context.ACTIVITY_SERVICE);
        List<RunningTaskInfo> tasks = am.getRunningTasks(1);
        if (!tasks.isEmpty()) {
            ComponentName topActivity = tasks.get(0).topActivity;
            if (!topActivity.getPackageName().equals(
                    context.getPackageName())) {
                     return true;
            }
        }
    } catch (SecurityException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    return false;
}

然后在你的 onPause 中你可以调用这个方法,并且可以停止声音。在 onRestart() 中,您可以启动声音。

2.您可以覆盖 OnBackPressed() 方法您可以在此方法中停止声音

3.另外,您可以使用keyEvent

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
    // TODO Auto-generated method stub

    if (keyCode == KeyEvent.KEYCODE_BACK) {
             //Your Code here
             // You can stop the sound here also
    }
    return super.onKeyDown(keyCode, event);
}
于 2013-08-22T06:24:21.643 回答
0

你应该停止播放音乐onPause()。开始播放音乐onResume()。但要遵守谷歌规定的指导方针:http ://android-developers.blogspot.com/2011/11/making-android-games-that-play-nice.html

于 2013-08-22T03:14:29.213 回答
0

Android 无法检测应用程序何时进入后台。当 Activity 进入后台时只有回调。

一个示例解决方案可能是使用服务播放音乐,并在每个 Activity 的 onPause 和 onResume 方法中,通知服务暂停/恢复音乐。

于 2013-08-22T04:37:07.523 回答
0

据我了解,你想做这样的事情

如果是这样,那么使用下面的代码..这里的级别是媒体播放器的对象。

@Override
public void onBackPressed() {
// TODO Auto-generated method stub
  super.onBackPressed();

  if (level != null) {
    if (level.isPlaying()) {

        level.stop();

    }
    level.release();
    level = null;
  }
}

@Override
protected void onPause() {
 // TODO Auto-generated method stub
  super.onPause();

  if (level != null) {
    if (level.isPlaying()) {

        level.pause();

    }
  }
 }
于 2013-08-22T03:37:41.617 回答