如何获得 activity 在 Android 上在前台活跃的时间

How to get how long an activity is active in foreground on Android

如何获取 activity 在 Android 中处于前台的时间。对于前。如果今天使用 WhatsApp 1 小时,如何以编程方式让 WhatsApp 激活一小时。

Android 有一个名为“dumpsys”的内置工具。
它的大部分功能都是针对 developers throw ADB, but for your purposes you should dig into UsageStatsManager 的,这将为您提供有关其他应用程序所需的数据。

App usage statistics API 允许应用程序开发人员收集与应用程序使用情况相关的统计信息。此 API 提供了比 deprecated getRecentTasks() 方法更详细的使用信息。

要使用此 API,您必须首先在清单中声明 android.permission.PACKAGE_USAGE_STATS 权限。用户还必须通过 Settings > Security > Apps with usage access.

启用此应用程序的访问权限

要统计app的使用情况,需要先通过以下代码获取UsageStatsManager的实例:

mUsageStatsManager = (UsageStatsManager) getActivity()
       .getSystemService(Context.USAGE_STATS_SERVICE);

然后您可以通过以下方法获取应用使用情况的统计信息:

Calendar cal = Calendar.getInstance();
cal.add(Calendar.YEAR, -1);
List<UsageStats> queryUsageStats = mUsageStatsManager
        .queryUsageStats(UsageStatsManager.INTERVAL_DAILY, cal.getTimeInMillis(),
                System.currentTimeMillis());

queryUsageStats() 的第一个参数用于统计数据聚合的时间间隔。第二个和第三个参数用于指定要包含在结果中的统计数据范围的开始和结束。

这里 basic app code on GitHub 展示了如何使用应用程序使用统计信息 API 让用户收集与应用程序使用情况相关的统计信息。

注意: android.app.usage 需要 API 21 级或以上。