0

我有一个具有多个活动的 android 应用程序第一个主要活动使用媒体播放器启动背景音乐。当应用程序处于前台时,如何让这些音乐继续播放我试图在 onpause 方法上停止应用程序并在 onresume 方法上启动它但是在每个活动中使用相同的代码很麻烦非常感谢

4

2 回答 2

2

如果您希望媒体播放器在应用程序处于前台之前播放,您不能在 onPause 中停止它。原因是如果从Activity A过渡到Activity B,会调用Activity A的onPause和Activity B的onResume/onCreate。为了实现你想要实现的东西,你需要检查应用程序何时进入后台。为此,请使用以下函数:

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

对于背景:

public static boolean isApplicationBroughtToBackground(final Context context)
{
        final ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
        final List<RunningTaskInfo> tasks = am.getRunningTasks(1);
    if (!tasks.isEmpty())
    {
        final ComponentName topActivity = tasks.get(0).topActivity;
        if (!topActivity.getPackageName().equals(context.getPackageName()))
        {
            return true;
        }
    }
    return false;
}

要调用此函数,请创建一个 Base Activity 并覆盖其 onPause() 和 onResume() 方法,扩展 Base Activity 代替 Activity。

希望这对您有所帮助。

什拉达

于 2012-05-23T05:26:26.523 回答
1

创建后,您应该将媒体播放器绑定到服务!您可以在安卓开发者页面上查看服务:http: //developer.android.com/reference/android/app/Service.html

一旦媒体播放器绑定到服务,哪个活动处于活动状态都无关紧要。

于 2012-05-23T05:12:31.460 回答