summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorMark Brophy <mbrophy@google.com>2011-07-01 16:56:24 +0100
committerMark Brophy <mbrophy@google.com>2011-07-10 21:19:23 +0100
commit9fc033083267d0c7f01e083400721b6cddb3a398 (patch)
treea9447c4c649d0d37a4f450188015efd5956ce0b2 /core
parentb7440a140b650932bf31cf51d3b87c3249e3b682 (diff)
downloadframeworks_base-9fc033083267d0c7f01e083400721b6cddb3a398.zip
frameworks_base-9fc033083267d0c7f01e083400721b6cddb3a398.tar.gz
frameworks_base-9fc033083267d0c7f01e083400721b6cddb3a398.tar.bz2
Expose app resume times to the ApplicationProvider.
Add ActivityManager.getAllPackageUsageStats which returns the PkgUsageStats object for all packages. In UsageStatsService, remember the last resume time of each component, and add that info to PkgUsageStats instances. ApplicationProvider will use getAllPackageUsageStats and the new field in PkgUsageStats to set the new SearchManager column SUGGEST_COLUMN_LAST_USAGE_HINT for requests with the GLOBAL_SEARCH permission. Change-Id: I80e9b127410ed0d528515d2256787f30a953e9b0
Diffstat (limited to 'core')
-rw-r--r--core/java/android/app/ActivityManager.java18
-rwxr-xr-xcore/java/com/android/internal/os/PkgUsageStats.java22
2 files changed, 38 insertions, 2 deletions
diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java
index a6658cc..d207a0a 100644
--- a/core/java/android/app/ActivityManager.java
+++ b/core/java/android/app/ActivityManager.java
@@ -1471,6 +1471,24 @@ public class ActivityManager {
}
/**
+ * Returns the usage statistics of each installed package.
+ *
+ * @hide
+ */
+ public PkgUsageStats[] getAllPackageUsageStats() {
+ try {
+ IUsageStats usageStatsService = IUsageStats.Stub.asInterface(
+ ServiceManager.getService("usagestats"));
+ if (usageStatsService != null) {
+ return usageStatsService.getAllPkgUsageStats();
+ }
+ } catch (RemoteException e) {
+ Log.w(TAG, "Could not query usage stats", e);
+ }
+ return new PkgUsageStats[0];
+ }
+
+ /**
* @param userid the user's id. Zero indicates the default user
* @hide
*/
diff --git a/core/java/com/android/internal/os/PkgUsageStats.java b/core/java/com/android/internal/os/PkgUsageStats.java
index 1ac191b..8c2c405 100755
--- a/core/java/com/android/internal/os/PkgUsageStats.java
+++ b/core/java/com/android/internal/os/PkgUsageStats.java
@@ -19,6 +19,9 @@ package com.android.internal.os;
import android.os.Parcel;
import android.os.Parcelable;
+import java.util.HashMap;
+import java.util.Map;
+
/**
* implementation of PkgUsageStats associated with an
* application package.
@@ -28,6 +31,7 @@ public class PkgUsageStats implements Parcelable {
public String packageName;
public int launchCount;
public long usageTime;
+ public Map<String, Long> componentResumeTimes;
public static final Parcelable.Creator<PkgUsageStats> CREATOR
= new Parcelable.Creator<PkgUsageStats>() {
@@ -46,31 +50,45 @@ public class PkgUsageStats implements Parcelable {
+ " " + packageName + "}";
}
- public PkgUsageStats(String pkgName, int count, long time) {
+ public PkgUsageStats(String pkgName, int count, long time, Map<String, Long> lastResumeTimes) {
packageName = pkgName;
launchCount = count;
usageTime = time;
+ componentResumeTimes = new HashMap<String, Long>(lastResumeTimes);
}
public PkgUsageStats(Parcel source) {
packageName = source.readString();
launchCount = source.readInt();
usageTime = source.readLong();
+ final int N = source.readInt();
+ componentResumeTimes = new HashMap<String, Long>(N);
+ for (int i = 0; i < N; i++) {
+ String component = source.readString();
+ long lastResumeTime = source.readLong();
+ componentResumeTimes.put(component, lastResumeTime);
+ }
}
public PkgUsageStats(PkgUsageStats pStats) {
packageName = pStats.packageName;
launchCount = pStats.launchCount;
usageTime = pStats.usageTime;
+ componentResumeTimes = new HashMap<String, Long>(pStats.componentResumeTimes);
}
public int describeContents() {
return 0;
}
- public void writeToParcel(Parcel dest, int parcelableFlags){
+ public void writeToParcel(Parcel dest, int parcelableFlags) {
dest.writeString(packageName);
dest.writeInt(launchCount);
dest.writeLong(usageTime);
+ dest.writeInt(componentResumeTimes.size());
+ for (Map.Entry<String, Long> ent : componentResumeTimes.entrySet()) {
+ dest.writeString(ent.getKey());
+ dest.writeLong(ent.getValue());
+ }
}
}