【问题标题】:How to Track App Usage in Android? How to detect when an activity is launched?如何在 Android 中跟踪应用程序使用情况?如何检测活动何时启动?
【发布时间】:2012-01-26 00:13:48
【问题描述】:

我需要像 AppUsage 一样跟踪 Android 中的应用使用情况(即跟踪应用启动的次数,以及每次使用所花费的时间)。我打算做的是记录应用程序启动时的开始时间,然后获取应用程序暂停或停止时的结束时间。在 LogCat 中,我可以看到 Activity 启动的日志。我查看了可用的系统广播,我不确定在活动开始时是否有任何广播。 .基本上,我如何检测活动何时启动?

编辑: 此外,Android 内部还有一个使用情况统计系统,可以在 Spare Parts 应用程序或拨打*#*#4636#*#* 时找到(测试 -> 使用情况统计)

【问题讨论】:

    标签: android usage-statistics


    【解决方案1】:

    我们现在可以使用作为 Android 5.0 API 的一部分发布的新 android.app.usage API 来访问 Android 设备上的应用使用历史记录。系统会收集每个应用的使用数据,每天汇总数据,每周、每月和每年的间隔

    对于每个应用,系统都会记录以下数据:

    • 上次使用该应用的时间
    • 应用程序的总时间长度 在该时间间隔的前台(按天、周、月或 年)
    • 当组件(由包标识 和活动名称)在一天中移动到前台或后台

    • 在设备配置更改时捕获时间戳(例如 设备方向因旋转而改变)

    参考:http://developer.android.com/reference/android/app/usage/package-summary.html

    【讨论】:

    • 我可以使用 UsageStats 检查应用程序使用了多少次吗?
    • 但是 'Context.USAGE_STATS_SERVICE' 字段是从 API 22(Android 5.1) 添加的,那么如何在 API 22 之前获取这些统计信息?
    • 这些数据是否可以跨应用程序使用?我可以拥有自己的应用来跟踪其他应用的使用情况吗?
    【解决方案2】:

    基本上,我如何检测活动何时启动?

    你没有。 Android SDK 中没有“应用启动的开始时间”和“应用暂停或停止的结束时间”。

    您引用的应用程序可能正在浪费大量 CPU 时间、RAM 和电池寿命,不断地轮询 ActivityManager

    请记住,如果您打算让用户以外的任何人访问它,那么您建议跟踪的内容就属于侵犯隐私的行为,这会导致 CarrierIQ 陷入相当大的麻烦。

    【讨论】:

    • 根据AppUsage description from the android market:AppUsage 几乎不使用电池电量 - 仅在您更改应用程序时记录,不像其他每 x 秒检查一次! - 我不确定如何AppUsage 正在这样做。这是一个向用户推荐应用程序的论文项目。其中一项要求是跟踪应用使用情况。
    • @Sofia:如果他们利用安全漏洞,我会查看他们的应用并向 Google 报告。感谢您提请我注意!
    • 在内部,Android 也有一个可用的使用统计系统,可以在 Spare Parts 应用程序或拨打*#*#4636#*#* 时找到。测试 -> 使用统计
    • “你不知道”不是一个很好的答案。几乎任何事情都有合法的方法和用例,OP 在问题本身中提供了一个。
    • 我同意,但这并不意味着答案是“你不同意”。而是“Android 团队没有为您提供易于使用的方法来做到这一点”,但当然有(非漏洞利用)方法可以为几乎任何事情做某事(在这种情况下,logcat-scanning on 4.1 之前的设备)。没错,这会给电池寿命和 CPU 使用带来压力,但它可能比“否”更接近 OP 正在寻找的答案。
    猜你喜欢
    • 1970-01-01
    • 2014-08-29
    • 1970-01-01
    • 2015-12-08
    • 2015-10-05
    • 1970-01-01
    • 2014-10-19
    • 2011-12-28
    • 2019-06-15
    相关资源
    最近更新 更多