0

複数のアクティビティを持つ Android アプリがあります。最初のメイン アクティビティは、メディア プレーヤーを使用してバックグラウンド ミュージックを開始します。アプリがフォアグラウンドである間、この音楽を再生し続けるにはどうすればよいですか onpause メソッドでアプリを停止し、onresume メソッドで起動しようとしましたが、すべてのアクティビティで同じコードを使用するのは面倒です どうもありがとう

4

2 に答える 2

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()メソッドをオーバーライドして、Activityの代わりにBaseActivityを拡張します。

これがお役に立てば幸いです。

シュラダ

于 2012-05-23T05:26:26.523 に答える
1

メディアプレーヤーを作成したら、サービスにバインドする必要があります。andriod開発者ページでサービスを確認できます:http://developer.android.com/reference/android/app/Service.html

メディアプレーヤーがサービスにバインドされると、どのアクティビティがアクティブであるかは関係ありません。

于 2012-05-23T05:12:31.460 に答える