Refine search
String topPackageName ; if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { UsageStatsManager mUsageStatsManager = (UsageStatsManager)getSystemService("usagestats"); long time = System.currentTimeMillis(); // We get usage stats for the last 10 seconds List<UsageStats> stats = mUsageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, time - 1000*10, time); // Sort the stats by the last time used if(stats != null) { SortedMap<Long,UsageStats> mySortedMap = new TreeMap<Long,UsageStats>(); for (UsageStats usageStats : stats) { mySortedMap.put(usageStats.getLastTimeUsed(),usageStats); } if(!mySortedMap.isEmpty()) { topPackageName = mySortedMap.get(mySortedMap.lastKey()).getPackageName(); } } }
@Test public void testQueryEvents_emptyEvents() throws Exception { UsageEvents events = usageStatsManager.queryEvents(1000L, 2000L); Event event = new Event(); assertThat(events.hasNextEvent()).isFalse(); assertThat(events.getNextEvent(event)).isFalse(); }
@Test @Config(minSdk = Build.VERSION_CODES.P) public void testUnregisterAppUsageObserver_existingObserverId_shouldRemoveObserver() { PendingIntent pendingIntent1 = PendingIntent.getBroadcast(context, 0, new Intent("ACTION1"), 0); usageStatsManager.registerAppUsageObserver( 12, new String[] {"com.package1", "com.package2"}, 123L, TimeUnit.MINUTES, pendingIntent1); PendingIntent pendingIntent2 = PendingIntent.getBroadcast(context, 0, new Intent("ACTION2"), 0); usageStatsManager.registerAppUsageObserver( 24, new String[] {"com.package3"}, 456L, TimeUnit.SECONDS, pendingIntent2); usageStatsManager.unregisterAppUsageObserver(12); assertThat(shadowOf(usageStatsManager).getRegisteredAppUsageObservers()) .containsExactly( new AppUsageObserver( 24, ImmutableList.of("com.package3"), 456L, TimeUnit.SECONDS, pendingIntent2)); }
String topPackageName; if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { UsageStatsManager mUsageStatsManager = (UsageStatsManager) getSystemService("usagestats"); long currentTime = System.currentTimeMillis(); // get usage stats for the last 10 seconds List<UsageStats> stats = mUsageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, currentTime - 1000 * 10, currentTime); // search for app with most recent last used time if(stats != null) { long lastUsedAppTime = 0; for (UsageStats usageStats : stats) { if (usageStats.getLastTimeUsed() > lastUsedAppTime) { topPackageName = usageStats.getPackageName(); lastUsedAppTime = usageStats.getLastTimeUsed(); } } } }
String getTopPackage(){ long ts = System.currentTimeMillis(); UsageStatsManager mUsageStatsManager = (UsageStatsManager)getSystemService("usagestats"); List<UsageStats> usageStats = mUsageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_BEST, ts-1000, ts); if (usageStats == null || usageStats.size() == 0) { return NONE_PKG; } Collections.sort(usageStats, mRecentComp); return usageStats.get(0).getPackageName(); }
long milliSecs = 60 * 1000; Date date = new Date(); List<UsageStats> queryUsageStats = usageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, date.getTime() - milliSecs, date.getTime()); if (queryUsageStats.size() > 0) { Log.i("LPU", "queryUsageStats size: " + queryUsageStats.size()); for (int i = 0; i < queryUsageStats.size(); i++) { UsageStats stats = queryUsageStats.get(i); if (i == 0 && !"org.pervacio.pvadiag".equals(stats.getPackageName())) { Log.i("LPU", "PackageName: " + stats.getPackageName() + " " + stats.getLastTimeStamp()); if (stats.getLastTimeStamp() > recentTime) {
UsageStatsManager usageStatsManager = (UsageStatsManager)getSystemService(USAGE_STATS_SERVICE); Calendar cal = Calendar.getInstance(); cal.add(Calendar.YEAR, -1); long start = cal.getTimeInMillis(); long end = System.currentTimeMillis(); List<UsageStats> queryUsageStats = usageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, start, end); for (UsageStats stats : queryUsageStats) { Log.e("TAG", "Usage stats for: " + stats.getPackageName()); }
final UsageStatsManager usageStatsManager = (UsageStatsManager) getSystemService(Context.USAGE_STATS_SERVICE);// Context.USAGE_STATS_SERVICE); Calendar beginCal = Calendar.getInstance(); beginCal.set(Calendar.DAY_OF_MONTH, 11); beginCal.set(Calendar.MONTH, 10); beginCal.set(Calendar.YEAR, 2015); Calendar endCal = Calendar.getInstance(); endCal.set(Calendar.DAY_OF_MONTH, 12); endCal.set(Calendar.MONTH, 10); endCal.set(Calendar.YEAR, 2015); final List<UsageStats> queryUsageStats = usageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, beginCal.getTimeInMillis(), endCal.getTimeInMillis()); System.out.println("results for " + beginCal.getTime().toGMTString() + " - " + endCal.getTime().toGMTString()); for (UsageStats app : queryUsageStats) { System.out.println(app.getPackageName() + " | " + (float) (app.getTotalTimeInForeground() / 1000)); }
@Test @Config(minSdk = Build.VERSION_CODES.P) public void testRegisterAppUsageObserver_duplicateObserverIds_shouldOverrideExistingObserver() { PendingIntent pendingIntent1 = PendingIntent.getBroadcast(context, 0, new Intent("ACTION1"), 0); usageStatsManager.registerAppUsageObserver( 12, new String[] {"com.package1", "com.package2"}, 123L, TimeUnit.MINUTES, pendingIntent1); PendingIntent pendingIntent2 = PendingIntent.getBroadcast(context, 0, new Intent("ACTION2"), 0); usageStatsManager.registerAppUsageObserver( 12, new String[] {"com.package3"}, 456L, TimeUnit.SECONDS, pendingIntent2); assertThat(shadowOf(usageStatsManager).getRegisteredAppUsageObservers()) .containsExactly( new AppUsageObserver( 12, ImmutableList.of("com.package3"), 456L, TimeUnit.SECONDS, pendingIntent2)); }
@Override public void onReceive(Context context, Intent intent) { // Save usage statistics right now! // We need to use the statics at this moment // for "skipping foreground apps" // No app is foreground after the screen is locked. mScreenLockTime = new Date().getTime(); if (SettingsManager.getInstance().getSkipForegroundEnabled() && Utility.checkUsageStatsPermission(FreezeService.this)) { UsageStatsManager usm = getSystemService(UsageStatsManager.class); mUsageStats = usm.queryAndAggregateUsageStats(mScreenLockTime - APP_INACTIVE_TIMEOUT, mScreenLockTime); } // Delay the work so that it can be canceled if the screen // gets unlocked before the delay passes mHandler.postDelayed(mFreezeWork, ((long) SettingsManager.getInstance().getAutoFreezeDelay()) * 1000); registerReceiver(mUnlockReceiver, new IntentFilter(Intent.ACTION_SCREEN_ON)); } };
@SuppressWarnings("WrongConstant") public static String getForegroundAppPackageName(Context context) { UsageStatsManager manager = (UsageStatsManager) context.getSystemService("usagestats"); long time = System.currentTimeMillis(); List<UsageStats> list = manager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, time - 1000 * 1000, time); if (list != null && !list.isEmpty()) { SortedMap<Long, UsageStats> map = new TreeMap<>(); for (UsageStats stats : list) { map.put(stats.getLastTimeUsed(), stats); } if (!map.isEmpty()) { return map.get(map.lastKey()).getPackageName(); } } return null; }
@Test public void queryUsageStats_noStatsAdded() { List<UsageStats> results = usageStatsManager.queryUsageStats(INTERVAL_WEEKLY, 0, 3000); assertThat(results).isEmpty(); }
final List<UsageStats> queryUsageStats=usageStatsManager.queryUsageStats( UsageStatsManager.INTERVAL_YEARLY, 0 ,System.currentTimeMillis()); Log.d("diskusage", "stats size = " + queryUsageStats.size()); final Set<String> packages = new HashSet<>(); for (UsageStats s : queryUsageStats) { packages.add(s.getPackageName());
@Test @Config(minSdk = Build.VERSION_CODES.P) public void testRegisterAppUsageObserver_uniqueObserverIds_shouldAddBothObservers() { PendingIntent pendingIntent1 = PendingIntent.getBroadcast(context, 0, new Intent("ACTION1"), 0); usageStatsManager.registerAppUsageObserver( 12, new String[] {"com.package1", "com.package2"}, 123L, TimeUnit.MINUTES, pendingIntent1); PendingIntent pendingIntent2 = PendingIntent.getBroadcast(context, 0, new Intent("ACTION2"), 0); usageStatsManager.registerAppUsageObserver( 24, new String[] {"com.package3"}, 456L, TimeUnit.SECONDS, pendingIntent2); assertThat(shadowOf(usageStatsManager).getRegisteredAppUsageObservers()) .containsExactly( new AppUsageObserver( 12, ImmutableList.of("com.package1", "com.package2"), 123L, TimeUnit.MINUTES, pendingIntent1), new AppUsageObserver( 24, ImmutableList.of("com.package3"), 456L, TimeUnit.SECONDS, pendingIntent2)); }
/** * 获取前台应用包名(API >= 22) * <p>需要添加 {@code <uses-permission android:name="android.permission.PACKAGE_USAGE_STATS"/>} 权限</p> * * @param context * @return */ @TargetApi(Build.VERSION_CODES.LOLLIPOP_MR1) public static String getForegroundPackage3(Context context) { UsageStatsManager usageStatsManager = (UsageStatsManager) context.getSystemService(Context.USAGE_STATS_SERVICE); Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date()); long endTime = calendar.getTimeInMillis();// 结束时间 calendar.add(Calendar.DAY_OF_MONTH, -1);// 时间间隔为一个月 long beginTime = calendar.getTimeInMillis();// 开始时间 // 获取一个月内的信息 List<UsageStats> usageStatses = usageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_MONTHLY, beginTime, endTime); if (usageStatses == null || usageStatses.size() == 0) { return null; } for (UsageStats usageStats : usageStatses) { if (recentStats == null || usageStats.getLastTimeUsed() > recentStats.getLastTimeUsed()) { recentStats = usageStats; } } return recentStats.getPackageName(); }
public void getTopActivtyFromLolipopOnwards(){ String topPackageName ; if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { UsageStatsManager mUsageStatsManager = (UsageStatsManager)getSystemService(Context.USAGE_STATS_SERVICE); long time = System.currentTimeMillis(); // We get usage stats for the last 10 seconds List<UsageStats> stats = mUsageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, time - 1000*10, time); // Sort the stats by the last time used if(stats != null) { SortedMap<Long,UsageStats> mySortedMap = new TreeMap<Long,UsageStats>(); for (UsageStats usageStats : stats) { mySortedMap.put(usageStats.getLastTimeUsed(),usageStats); } if(mySortedMap != null && !mySortedMap.isEmpty()) { topPackageName = mySortedMap.get(mySortedMap.lastKey()).getPackageName(); Log.e("TopPackage Name",topPackageName); } } } }
@Test public void queryUsageStats_multipleIntervalTypes() { // Weekly data. UsageStats usageStats1 = newUsageStats(TEST_PACKAGE_NAME1, 1000, 2000); UsageStats usageStats2 = newUsageStats(TEST_PACKAGE_NAME1, 2001, 3000); shadowOf(usageStatsManager).addUsageStats(INTERVAL_WEEKLY, usageStats1); shadowOf(usageStatsManager).addUsageStats(INTERVAL_WEEKLY, usageStats2); // Daily data. UsageStats usageStats3 = newUsageStats(TEST_PACKAGE_NAME1, 2001, 3000); shadowOf(usageStatsManager).addUsageStats(INTERVAL_DAILY, usageStats3); List<UsageStats> results = usageStatsManager.queryUsageStats(INTERVAL_WEEKLY, 0, 3000); assertThat(results).containsExactly(usageStats1, usageStats2); results = usageStatsManager.queryUsageStats(INTERVAL_DAILY, 0, 3000); assertThat(results).containsExactly(usageStats3); }
.build()); UsageEvents events = usageStatsManager.queryEvents(1000L, 2000L); Event event = new Event();
@Test @Config(minSdk = Build.VERSION_CODES.P) public void testUnregisterAppUsageObserver_nonExistentObserverId_shouldBeNoOp() { PendingIntent pendingIntent1 = PendingIntent.getBroadcast(context, 0, new Intent("ACTION1"), 0); usageStatsManager.registerAppUsageObserver( 12, new String[] {"com.package1", "com.package2"}, 123L, TimeUnit.MINUTES, pendingIntent1); PendingIntent pendingIntent2 = PendingIntent.getBroadcast(context, 0, new Intent("ACTION2"), 0); usageStatsManager.registerAppUsageObserver( 24, new String[] {"com.package3"}, 456L, TimeUnit.SECONDS, pendingIntent2); usageStatsManager.unregisterAppUsageObserver(36); assertThat(shadowOf(usageStatsManager).getRegisteredAppUsageObservers()) .containsExactly( new AppUsageObserver( 12, ImmutableList.of("com.package1", "com.package2"), 123L, TimeUnit.MINUTES, pendingIntent1), new AppUsageObserver( 24, ImmutableList.of("com.package3"), 456L, TimeUnit.SECONDS, pendingIntent2)); }
@Test @Config(minSdk = Build.VERSION_CODES.P) public void testTriggerRegisteredAppUsageObserver_shouldSendIntentAndRemoveObserver() { PendingIntent pendingIntent1 = PendingIntent.getBroadcast(context, 0, new Intent("ACTION1"), 0); usageStatsManager.registerAppUsageObserver( 12, new String[] {"com.package1", "com.package2"}, 123L, TimeUnit.MINUTES, pendingIntent1); PendingIntent pendingIntent2 = PendingIntent.getBroadcast(context, 0, new Intent("ACTION2"), 0); usageStatsManager.registerAppUsageObserver( 24, new String[] {"com.package3"}, 456L, TimeUnit.SECONDS, pendingIntent2); shadowOf(usageStatsManager).triggerRegisteredAppUsageObserver(24, 500000L); List<Intent> broadcastIntents = shadowOf(context).getBroadcastIntents(); assertThat(broadcastIntents).hasSize(1); Intent broadcastIntent = broadcastIntents.get(0); assertThat(broadcastIntent.getAction()).isEqualTo("ACTION2"); assertThat(broadcastIntent.getIntExtra(UsageStatsManager.EXTRA_OBSERVER_ID, 0)).isEqualTo(24); assertThat(broadcastIntent.getLongExtra(UsageStatsManager.EXTRA_TIME_LIMIT, 0)) .isEqualTo(456000L); assertThat(broadcastIntent.getLongExtra(UsageStatsManager.EXTRA_TIME_USED, 0)) .isEqualTo(500000L); assertThat(shadowOf(usageStatsManager).getRegisteredAppUsageObservers()) .containsExactly( new AppUsageObserver( 12, ImmutableList.of("com.package1", "com.package2"), 123L, TimeUnit.MINUTES, pendingIntent1)); }