gpt4 book ai didi

android - 计算应用程序正常运行时间 - android

转载 作者:行者123 更新时间:2023-11-29 02:41:13 26 4
gpt4 key购买 nike

我正在尝试获取列表中每个已安装应用程序的功耗详细信息。但由于我没有根访问权限,我知道我将无法使用 adb shell 命令获取所有进程的电池使用信息。

我想我能做的是获取每个已安装应用的正常运行时间,获取我的电池断开连接的总时间(通过在ACTION_POWER_DISCONNECTED 发生时保存时间戳),并计算 -

( app_runtime * 100 )/total_time_battery_disconnected

但是,我无法获取有关应用程序的最基本信息 -> 它运行了多长时间?我可以在 RunningServices 上使用 activeSince,但这不是这里的解决方案。

ApplicationInfo 类也不提供任何此类方法。

有什么办法可以得到这个细节吗?我看到很多过时软件应用程序显示了我安装的每个应用程序的总消耗量,同时还显示了运行时间时间,所以我知道这是可能的。但是如何呢?

我调查了 this article在 Android 电池生命周期上。但这仅限于 Android 内部。

甚至尝试过UsageStats ,但它不起作用,在查询使用情况统计列表时返回零。

最佳答案

UsageStatsManager应该做你要求的。不确定为什么它不起作用,也许您的 list 中需要这个?

<uses-permission
android:name="android.permission.PACKAGE_USAGE_STATS"
tools:ignore="ProtectedPermissions" />

这是一个记录 UsageStats 的示例

long startTime = new GregorianCalendar(2016, 0, 1).getTimeInMillis();
long endTime = new GregorianCalendar(2017, 0, 1).getTimeInMillis();

UsageStatsManager usageStatsManager = (UsageStatsManager)context.getSystemService(Context.USAGE_STATS_SERVICE);
List<UsageStats> queryUsageStats = usageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, startTime, endTime);

for (UsageStats us : queryUsageStats) {
Log.d(TAG, us.getPackageName() + " = " + us.getTotalTimeInForeground());
}

此页面有an example这将引导您完成获得用户许可的过程。最后,这里是full sample on GitHub .

API 21 之前 - SDK 不提供获取应用程序使用统计信息的机制。唯一的方法是轮询 ActivityManager使用 getRunningTasksgetRecentTasks功能。我会引导你到 CommonsWare's response到一个类似的问题。

关于android - 计算应用程序正常运行时间 - android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43977571/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com