如何让媒体播放器在所有活动中播放

时间:2012-05-23 05:03:57

标签: android

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

2 个答案:

答案 0 :(得分:2)

如果您想要播放onPause,则无法停止播放,直到应用程序位于前台。原因是如果从活动A转移到活动B,将调用活动A的onPause和活动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;
}

要调用此函数,请创建基本活动并覆盖其onPause()和onResume()方法,扩展基本活动以代替活动。

希望这会对你有所帮助。

Shraddha

答案 1 :(得分:1)

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

媒体播放器绑定到服务后,哪个活动处于活动状态并不重要。