gpt4 book ai didi

android - 如何防止我的媒体播放器在我切换 Activity 时停止但在我点击主页时不停止?

转载 作者:行者123 更新时间:2023-11-29 21:50:05 29 4
gpt4 key购买 nike

我有一个播放音乐的应用程序。 (您也可以关闭选项菜单。)

但问题是当你按下主页按钮时,音乐一直在播放,我想在用户按下主页按钮时停止音乐。

我试图将 onPause() 和 onStop() 方法放到 music.stop() 中。但它失败了,因为当我开始一项新 Activity 时,音乐也会停止,但我不希望它停止,只有当按下主页按钮时。

我的代码是:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.options);
it=(RadioButton)findViewById(R.id.radio0);
ti=(RadioButton)findViewById(R.id.radio1);
but=(ToggleButton)findViewById(R.id.toggleButton1);
music=MediaPlayer.create(Options.this, R.raw.avril);
mainmenu=new Intent("com.KAYA.ingilizce_gelistirme.BASLANGIC");


but.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
if(but.isChecked()) {
if(!music.isPlaying())
music.start();
}
else
if(music.isPlaying())
music.pause();

}
});
it.setChecked(true);
Button menu=(Button)findViewById(R.id.button1);
menu.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
startActivity(mainmenu);
}
});

}

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


startActivity(new Intent(mainmenu));
}


@Override
protected void onPause() {

if(music.isPlaying()){
music.pause();
music.release();
}
but.setChecked(false);

super.onPause();

}



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

}

这里是音乐开始播放的 OPTIONS ACTIVITY,但是当我通过菜单 Activity 时,音乐也停止了。

最佳答案

您需要启动单独的服务来播放音乐。

方法一

此方法更适合大型应用程序。

在您的音乐服务中定期(例如,每 3 秒一次)调用以下类,以查看您的应用是否在后台运行。信用:check android application is in foreground or not?

class ForegroundCheckTask extends AsyncTask<Context, Void, Boolean> {
@Override
protected Boolean doInBackground(Context... params) {
final Context context = params[0];
return isAppOnForeground(context);
}

private boolean isAppOnForeground(Context context) {
ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses();
if (appProcesses == null) {
return false;
}
final String packageName = context.getPackageName();
for (ActivityManager.RunningAppProcessInfo appProcess : appProcesses) {
if (appProcess.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND && appProcess.processName.equals(packageName)) {
return true;
}
}
return false;
}
}

方法二

接下来,当您检测到您的应用程序已后台运行时,您需要关闭您的服务。看这里:Checking if an Android application is running in the background .请注意,您不想在每个类中手动覆盖 onPause 和 onResume。您希望尽可能使用共同的祖先。

关于android - 如何防止我的媒体播放器在我切换 Activity 时停止但在我点击主页时不停止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14665899/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com