首先 - 抱歉我的英语。
我刚创建了Android应用。它包含几个活动,在此应用程序的后台播放音乐。当用户以某种方式从应用程序中退出时(通过单击“后退”按钮,主页按钮或其他方式),我需要停止播放音乐。问题是处理这个时刻。我不知道怎么做。
请帮帮我, CD
答案 0 :(得分: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);
}
答案 1 :(得分:0)
你应该停止播放音乐onPause()
。开始播放音乐onResume()
。但请遵守Google提供的指导原则:http://android-developers.blogspot.com/2011/11/making-android-games-that-play-nice.html
答案 2 :(得分:0)
根据我的理解,你想做this Question
之类的事情如果是,请使用以下代码。级别是媒体播放器的对象。
@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();
}
}
}
答案 3 :(得分:0)
Android无法检测应用何时进入后台。当活动进入后台时,只有回调。
示例解决方案可以是使用服务和每个Activity的onPause和onResume方法播放音乐,通知服务暂停/恢复音乐。