使用UsageStatsMannager获取应用使用时长

摘要

  • UsageStatsManager.queryEventStats:一般是用来根据最近时间戳找到top进程

  • UsageStatsManager.queryAndAggregateUsageStats:获取聚合后的应用前台使用时长

  • UsageStatsManager.queryEvents:自己计算每个进程的运行时长和启动次数(包含Activity和Service ForeGround 事件)

调用示例

--javascripttypescriptshellbashsqljsonhtmlcssccppjavarubypythongorustmarkdown

package com.fadi.bigdata

import android.os.Build
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.annotation.RequiresApi

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

    @RequiresApi(Build.VERSION_CODES.Q)
    override fun onResume() {
        super.onResume()
        val mUsageStatsManagerUtils = UsageStatsManagerUtils()
        // 获取聚合后的应用前台使用时长
        mUsageStatsManagerUtils.getLastDayAggregateUsageStats(this)
        // 用途不大,一般是用来根据最近时间戳找到top进程
        mUsageStatsManagerUtils.getLastDayQueryEventStats(this)
        // 自己计算每个进程的运行时长和启动次数(包含Activity和Service ForeGround 事件)
        mUsageStatsManagerUtils.getLastDayEvents(this)
    }
}

工具类

--javascripttypescriptshellbashsqljsonhtmlcssccppjavarubypythongorustmarkdown

package com.fadi.bigdata

import android.app.usage.UsageEvents
import android.app.usage.UsageStatsManager
import android.content.Context
import android.os.Build
import android.util.Log
import androidx.annotation.RequiresApi
import java.util.*


class UsageStatsManagerUtils {

    /**
     * 手动开启权限:允许访问使用记录的权限
     */
    @RequiresApi(Build.VERSION_CODES.Q)
    public fun getLastDayQueryEventStats(mContext: Context) {
        Log.d("shz", "getLastDayQueryEventStats start")
        val ONE_DAY = (24 * 60 * 60 * 1000).toLong()

        val calendar = Calendar.getInstance()
        calendar.set(Calendar.HOUR_OF_DAY, 0)
        calendar.set(Calendar.MINUTE, 0)
        calendar.set(Cale
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

法迪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值