如何找出应用程序(Whats App)的使用时间?
How to find out the app (Whats App) usage duration?
我一直在四处寻找,想找出一种方法来了解我在 Whatsapp 上花费了多少时间。我在 Playstore 上找到了几个应用程序:
https://play.google.com/store/apps/details?id=com.agrvaibhav.AppUsageTracking&hl=en
此类应用程序的大小小于 1MB,所以我猜这是一段相当简单的代码,但我找不到任何方法。
所有链接要么提供一种方法让我知道我自己的应用程序被使用了多少,要么他们说这可能侵犯了隐私[奇怪!]。
代码 * # * # 7 8 6 # * # *
应该可以工作,但每次尝试都会崩溃。
我苦苦寻找,找不到任何解决办法。我想到的一种可能方法是 运行 一种跟踪所有打开的应用程序的服务 - 但我不确定在 Android.
中是否可行
Lollipop 中实际上有一个名为 Usage Stats API 的新 API,它可以让应用准确跟踪您正在寻找的信息类型。
要注意的是,使用它需要只能由系统授予的权限 activity,而不是在清单中。文档指定系统 activity 可能不会出现在所有设备上。三星和 LG 是已知已从其构建中删除 activity 的制造商之一,因此只有系统应用程序才能在其设备上使用使用情况统计信息 API。
是的,使用情况统计 API 就是答案。
最初想弄清楚,但我终于设法做到了。
所需权限为:
<uses-permission
android:name="android.permission.PACKAGE_USAGE_STATS"
tools:ignore="ProtectedPermissions" />
获取应用使用情况的代码:
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));
}
打开权限使用:
Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS);
startActivity(intent);
这个问题帮助解决了所有问题。
Android 网站上更好的文档会大有帮助。
这里有几个对我有帮助的链接:
https://github.com/googlesamples/android-AppUsageStatistics
How to use UsageStatsManager?
您会看到更多类似的应用程序,它们会检测您整周的应用程序使用情况。
然而,在使用此应用程序时,我发现这不是 运行ning 任何后台服务(通过 运行ning 服务检查)。所以这必须使用使用情况统计,它实际上是 android 提供的内置机制,它本身每天、每月和每年跟踪您的移动活动。因此,您只需使用此功能,获取所有数据并将其呈现给您的用户。
虽然对于 Pre-lollipop 设备,您可能需要 运行 后台服务以保持跟踪用户 activity。
我一直在四处寻找,想找出一种方法来了解我在 Whatsapp 上花费了多少时间。我在 Playstore 上找到了几个应用程序:
https://play.google.com/store/apps/details?id=com.agrvaibhav.AppUsageTracking&hl=en
此类应用程序的大小小于 1MB,所以我猜这是一段相当简单的代码,但我找不到任何方法。
所有链接要么提供一种方法让我知道我自己的应用程序被使用了多少,要么他们说这可能侵犯了隐私[奇怪!]。
代码 * # * # 7 8 6 # * # *
应该可以工作,但每次尝试都会崩溃。
我苦苦寻找,找不到任何解决办法。我想到的一种可能方法是 运行 一种跟踪所有打开的应用程序的服务 - 但我不确定在 Android.
中是否可行Lollipop 中实际上有一个名为 Usage Stats API 的新 API,它可以让应用准确跟踪您正在寻找的信息类型。
要注意的是,使用它需要只能由系统授予的权限 activity,而不是在清单中。文档指定系统 activity 可能不会出现在所有设备上。三星和 LG 是已知已从其构建中删除 activity 的制造商之一,因此只有系统应用程序才能在其设备上使用使用情况统计信息 API。
是的,使用情况统计 API 就是答案。 最初想弄清楚,但我终于设法做到了。
所需权限为:
<uses-permission
android:name="android.permission.PACKAGE_USAGE_STATS"
tools:ignore="ProtectedPermissions" />
获取应用使用情况的代码:
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));
}
打开权限使用:
Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS);
startActivity(intent);
这个问题帮助解决了所有问题。 Android 网站上更好的文档会大有帮助。
这里有几个对我有帮助的链接:
https://github.com/googlesamples/android-AppUsageStatistics
How to use UsageStatsManager?
您会看到更多类似的应用程序,它们会检测您整周的应用程序使用情况。
然而,在使用此应用程序时,我发现这不是 运行ning 任何后台服务(通过 运行ning 服务检查)。所以这必须使用使用情况统计,它实际上是 android 提供的内置机制,它本身每天、每月和每年跟踪您的移动活动。因此,您只需使用此功能,获取所有数据并将其呈现给您的用户。
虽然对于 Pre-lollipop 设备,您可能需要 运行 后台服务以保持跟踪用户 activity。