摘要
-
UsageStatsManager.queryEventStats:一般是用来根据最近时间戳找到top进程
-
UsageStatsManager.queryAndAggregateUsageStats:获取聚合后的应用前台使用时长
-
UsageStatsManager.queryEvents:自己计算每个进程的运行时长和启动次数(包含Activity和Service ForeGround 事件)
调用示例
--javascripttypescriptshellbashsqljsonhtmlcssccppjavarubypythongorustmarkdown
package com.fadi.bigdataimport android.os.Build
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.annotation.RequiresApiclass 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.bigdataimport 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