摘要
-
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