/* *******************************************
* Copyright (c) 2011
* HT srl, All rights reserved.
* Project : RCS, AndroidService
* File : RunningProcesses.java
* Created : 6-mag-2011
* Author : zeno
* *******************************************/
package com.android.dvci;
import android.app.ActivityManager;
import android.content.ComponentName;
import android.content.Context;
import com.android.dvci.auto.Cfg;
import com.android.dvci.gui.ASG;
import com.android.dvci.util.Check;
import com.android.dvci.util.StringUtils;
import com.android.mm.M;
import java.util.List;
public class RunningProcesses {
private static final String TAG = "RunningProcess"; //$NON-NLS-1$
private static RunningProcesses instance;
private String foreground = "";
private final ActivityManager activityManager;
private RunningProcesses() {
activityManager = (ActivityManager) Status.getAppContext().getSystemService(Context.ACTIVITY_SERVICE);
}
public static RunningProcesses self() {
if (instance == null) {
instance = new RunningProcesses();
}
return instance;
}
public synchronized String getForeground_L(){
Check.requires(activityManager != null, "Null activityManager"); //$NON-NLS-1$
List<ActivityManager.RunningAppProcessInfo> processInfo = activityManager.getRunningAppProcesses();
for (ActivityManager.RunningAppProcessInfo r: processInfo ){
//IMPORTANCE_FOREGROUND Constant for importance: this process is running the foreground UI.
if( r.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND ) {
foreground = r.processName;
break;
}
}
return foreground;
}
public synchronized String getForeground(){
Check.requires(activityManager != null, "Null activityManager"); //$NON-NLS-1$
// get the info from the currently running task
List<ActivityManager.RunningTaskInfo> taskInfo = activityManager.getRunningTasks(1);
if(taskInfo==null || taskInfo.isEmpty()){
return "";
}
ComponentName componentInfo = taskInfo.get(0).topActivity;
foreground = componentInfo.getPackageName();
return foreground;
}
public synchronized String getForeground_wrapper() {
Check.requires(activityManager != null, "Null activityManager"); //$NON-NLS-1$
String olfFore = foreground;
if (android.os.Build.VERSION.SDK_INT > 20){
getForeground_L();
}else{
getForeground();
}
if (Cfg.DEBUG) {
if (!foreground.equals(olfFore)) {
Check.log(TAG + " (update) topActivity CURRENT Activity: " + foreground);
}
}
return foreground;
}
public boolean isGuiVisible() {
Check.requires(activityManager != null, "Null activityManager"); //$NON-NLS-1$
String pack = Status.self().getAppContext().getPackageName();
String foreground = getForeground_wrapper();
if (foreground.equals(pack)) {
if (Cfg.DEBUG) {
Check.log(TAG + " (isGuiVisible), found: " + pack);
}
return true;
}
return false;
}
public synchronized boolean isPresent(String process) {
if (foreground == null || foreground.length() == 0) {
return false;
}
if (process.length() == 0) {
return false;
}
if (StringUtils.matchStar(process, foreground) == true) {
return true;
}
return false;
}
}