Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ff72b3ee authored by Adam Lesinski's avatar Adam Lesinski Committed by Android (Google) Code Review
Browse files

Merge "Update to use new UsageStats API" into lmp-dev

parents 4fbe967e 1789f7d2
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1508,7 +1508,7 @@
            </intent-filter>
        </activity>

        <activity android:name="UsageStats" android:label="@string/usage_stats_label"
        <activity android:name="UsageStatsActivity" android:label="@string/usage_stats_label"
                  android:taskAffinity="com.android.settings"
                  android:parentActivityName="Settings">
            <intent-filter>
+41 −30
Original line number Diff line number Diff line
@@ -17,7 +17,7 @@
package com.android.settings;

import android.app.Activity;
import android.app.usage.PackageUsageStats;
import android.app.usage.UsageStats;
import android.app.usage.UsageStatsManager;
import android.content.Context;
import android.content.pm.ApplicationInfo;
@@ -30,6 +30,7 @@ import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Map;

import android.text.format.DateUtils;
@@ -48,7 +49,7 @@ import android.widget.AdapterView.OnItemSelectedListener;
/**
 * Activity to display package usage statistics.
 */
public class UsageStats extends Activity implements OnItemSelectedListener {
public class UsageStatsActivity extends Activity implements OnItemSelectedListener {
    private static final String TAG = "UsageStatsActivity";
    private static final boolean localLOGV = false;
    private UsageStatsManager mUsageStatsManager;
@@ -56,7 +57,7 @@ public class UsageStats extends Activity implements OnItemSelectedListener {
    private UsageStatsAdapter mAdapter;
    private PackageManager mPm;

    public static class AppNameComparator implements Comparator<PackageUsageStats> {
    public static class AppNameComparator implements Comparator<UsageStats> {
        private Map<String, String> mAppLabelList;

        AppNameComparator(Map<String, String> appList) {
@@ -64,25 +65,25 @@ public class UsageStats extends Activity implements OnItemSelectedListener {
        }

        @Override
        public final int compare(PackageUsageStats a, PackageUsageStats b) {
        public final int compare(UsageStats a, UsageStats b) {
            String alabel = mAppLabelList.get(a.getPackageName());
            String blabel = mAppLabelList.get(b.getPackageName());
            return alabel.compareTo(blabel);
        }
    }

    public static class LastTimeUsedComparator implements Comparator<PackageUsageStats> {
    public static class LastTimeUsedComparator implements Comparator<UsageStats> {
        @Override
        public final int compare(PackageUsageStats a, PackageUsageStats b) {
        public final int compare(UsageStats a, UsageStats b) {
            // return by descending order
            return (int)(b.getLastTimeUsed() - a.getLastTimeUsed());
        }
    }

    public static class UsageTimeComparator implements Comparator<PackageUsageStats> {
    public static class UsageTimeComparator implements Comparator<UsageStats> {
        @Override
        public final int compare(PackageUsageStats a, PackageUsageStats b) {
            return (int)(b.getTotalTimeSpent() - a.getTotalTimeSpent());
        public final int compare(UsageStats a, UsageStats b) {
            return (int)(b.getTotalTimeInForeground() - a.getTotalTimeInForeground());
        }
    }

@@ -104,32 +105,43 @@ public class UsageStats extends Activity implements OnItemSelectedListener {
        private UsageTimeComparator mUsageTimeComparator = new UsageTimeComparator();
        private AppNameComparator mAppLabelComparator;
        private final ArrayMap<String, String> mAppLabelMap = new ArrayMap<>();
        private final ArrayList<PackageUsageStats> mPackageStats = new ArrayList<>();
        private final ArrayList<UsageStats> mPackageStats = new ArrayList<>();

        UsageStatsAdapter() {
            Calendar cal = Calendar.getInstance();
            cal.add(Calendar.DAY_OF_YEAR, -5);

            final android.app.usage.UsageStats stats =
                    mUsageStatsManager.getRecentStatsSince(cal.getTimeInMillis());
            final List<UsageStats> stats =
                    mUsageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_BEST,
                            cal.getTimeInMillis(), System.currentTimeMillis());
            if (stats == null) {
                return;
            }

            final int pkgCount = stats.getPackageCount();
            for (int i = 0; i < pkgCount; i++) {
                final PackageUsageStats pkgStats = stats.getPackage(i);
            ArrayMap<String, UsageStats> map = new ArrayMap<>();
            final int statCount = stats.size();
            for (int i = 0; i < statCount; i++) {
                final android.app.usage.UsageStats pkgStats = stats.get(i);

                // load application labels for each application
                try {
                    ApplicationInfo appInfo = mPm.getApplicationInfo(pkgStats.getPackageName(), 0);
                    String label = appInfo.loadLabel(mPm).toString();
                    mAppLabelMap.put(pkgStats.getPackageName(), label);
                    mPackageStats.add(pkgStats);

                    UsageStats existingStats =
                            map.get(pkgStats.getPackageName());
                    if (existingStats == null) {
                        map.put(pkgStats.getPackageName(), pkgStats);
                    } else {
                        existingStats.add(pkgStats);
                    }

                } catch (NameNotFoundException e) {
                    // This package may be gone.
                }
            }
            mPackageStats.addAll(map.values());

            // Sort list
            mAppLabelComparator = new AppNameComparator(mAppLabelMap);
@@ -177,14 +189,14 @@ public class UsageStats extends Activity implements OnItemSelectedListener {
            }

            // Bind the data efficiently with the holder
            PackageUsageStats pkgStats = mPackageStats.get(position);
            UsageStats pkgStats = mPackageStats.get(position);
            if (pkgStats != null) {
                String label = mAppLabelMap.get(pkgStats.getPackageName());
                holder.pkgName.setText(label);
                holder.lastTimeUsed.setText(DateUtils.formatSameDayTime(pkgStats.getLastTimeUsed(),
                        System.currentTimeMillis(), DateFormat.MEDIUM, DateFormat.MEDIUM));
                holder.usageTime.setText(
                        DateUtils.formatElapsedTime(pkgStats.getTotalTimeSpent() / 1000));
                        DateUtils.formatElapsedTime(pkgStats.getTotalTimeInForeground() / 1000));
            } else {
                Log.w(TAG, "No usage stats info for package:" + position);
            }
@@ -242,4 +254,3 @@ public class UsageStats extends Activity implements OnItemSelectedListener {
        // do nothing
    }
}