使用UsageStatsMannager获取应用使用时长

摘要

  • 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/877237.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Lombok注解之@SneakyThrows作用

Lombok注解之SneakyThrows作用 读法 [ˈsniːki] [θroʊz] 悄悄的 抛出顾名思义,它能够自动偷摸的为咱们的代码生成一个try…catch块,并把异常向上抛出来。 使用 SneakyThrows的使用范围: 只能作用在方法和构造函数之上。从源码就可以…

C# dataGridView 去掉左边多出来空列

1.问题 在使用winform做界面程序时,dataGridView控件创建好后,左侧会多出一列为空,如何删除呢 2.解决方法 你可以在属性窗口中进行设置 如图: 将RowHeadersVisible 属性设置为False 或者代码设置 this.dataGridView1.RowHea…

我们的前端开发逆天了!1 小时搞定了新网站,还跟我说 “不要钱”

大家好,我是程序员鱼皮。前段时间我们上线了一个新软件 剪切助手 ,并且针对该项目做了一个官网: 很多同学表示官网很好看,还好奇是怎么做的,其实这个网站的背后还有个有趣的小故事。。。 鱼皮:我们要做个官…

playbooks 分布式部署 LNMP

1、环境配置 ansible 服务器 192.168.10.10nginx 服务器 192.168.10.20mysql 服务器 192.168.10.21php 服务器 192.168.10.22 2、安装 ansble #192.168.10.10节点 yum install -y epel-release #先安装 epel 源 yum install -y ansible配置主机清单 …

计算机毕业设计-程序论文-基于web线上项目竞标平台的开发与实现

本系统开发采用技术为JSP、Bootstrap、Ajax、SSM、Java、Tomcat、Maven 此文章为本人亲自指导加编写,禁止任何人抄袭以及各类盈利性传播, 相关的代码部署论文ppt代码讲解答辩指导文件都有可私要 项目源码,请关注❥点赞收藏并私信博主&#x…

001.精读《Big Data: A Survey》

文章目录 1. 引言2. 精读2.1 摘要2.2 背景2.4 相关技术2.5 相关流程2.6 应用场景 3. 总结 1. 引言 大数据精读周刊首次与大家正式见面。我们每周将精读并分析几篇精选文章,试图讨论并得出结论性观点。我们的目标是通过深入探讨,帮助大家更好地理解大数据…

阿里玄铁处理器涉及的相关技术居然有PHP

其实跟PHP没啥关系,也可以说有点关系 指令集说明: RISC-V 指令集是由美国加州大学伯克利分校(University of California, Berkeley)的研究人员开发的。该项目主要由Krste Asanović教授领导,并且得到了计算机体系结构…

springboot+vue+mybatis线上选课系统+PPT+论文+讲解+售后

在如今社会上,关于信息上面的处理,没有任何一个企业或者个人会忽视,如何让信息急速传递,并且归档储存查询,采用之前的纸张记录模式已经不符合当前使用要求了。所以,对学生选课信息管理的提升,也…

FastAPI(七十二)实战开发《在线课程学习系统》接口开发-- 留言列表开发

源码见:"fastapi_study_road-learning_system_online_courses: fastapi框架实战之--在线课程学习系统" 之前我们分享了FastAPI(七十一)实战开发《在线课程学习系统》接口开发-- 查看留言,这次我们分享留言列表开发。 获…

Git 创建分支进行写作开发

第一次链接仓库提交 and 有SSH公匙 第一步&#xff1a; git clone 远程仓库链接clone 远程已有仓库到本地 第二部&#xff1a; cd 文件夹 第三步&#xff1a; git checkout -b <your_branch_name> 创建分支 第四步&#xff1a; git add . 将目前目录下的所有文件…

用frp内网穿透https网站

场景说明 在微信小程序上线测试的时候&#xff0c;自主开发的后端服务在公司局域网&#xff0c;小程序前端在微信公众平台只支持配置https协议的域名来访问服务端。公司一直在使用frp内网穿透工具实现公网访问公司局域网服务&#xff0c;因此&#xff0c;研究如何实现frp代理h…

Java高手之路:每日一练,技能精进秘籍

目录 一、题目知识点java中有两种方式实现线程Servlet生命周期总结 一、题目 选自牛客网 1.后端获取数据&#xff0c;向前端输出过程中&#xff0c;以下描述正确的是 A.对于前端过滤过的参数&#xff0c;属于可信数据&#xff0c;可以直接输出到前端页面 B.对于从数据库获得的…

【YOLOv5/v7改进系列】引入YOLOv9的RepNCSPELAN4

一、导言 YOLOv9的几个主要创新点&#xff1a; Programmable Gradient Information (PGI): PGI是一种机制&#xff0c;用于应对深度网络中实现多目标所需要的多种变化。PGI提供完整的输入信息来计算目标函数&#xff0c;从而获得可靠的梯度信息以更新网络权重。PGI可以自由选择…

TCP/IP协议——使用Socket套接字实现

目录 Socket 使用Socket实现TCP客户端和服务器的过程 使用Socket搭建TCP服务器 线程优化 向客户端发送消息 连接的断开 客户端主动断开 服务端主动断开 服务器完整的程序 使用Socket编写客户端程序连接TCP服务器 Socket Socket是一种网络通信协议&#xff0c;它允许…

x-cmd pkg | yazi - 超快终端文件管理器

目录 简介快速入门功能特点竞品和相关项目进一步阅读 简介 yazi 是由 github.com/sxyazi 用 Rust 开发的终端文件管理器&#xff0c;支持预览文本文件、pdf 文件、图像、视频&#xff0c;内置代码高亮功能。在内部&#xff0c;它使用 Tokio 作为其异步运行时&#xff0c;以非阻…

【Vue3】watch 监视多种类型数据

【Vue3】watch 监视多种类型数据 背景简介开发环境开发步骤及源码 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0c;技术出身的人总是很难放下一些执念&#xff0c;遂将这些知识整理成文&#xff0c;以纪念曾经努力学习奋斗…

大数据-53 Kafka 基本架构核心概念 Producer Consumer Broker Topic Partition Offset 基础概念了解

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

实战:Zookeeper 简介和单点部署ZooKeeper

Zookeeper 简介 ZooKeeper是一个开源的分布式协调服务&#xff0c;它是Apache软件基金会下的一个项目&#xff0c;旨在解决分布式系统中的协调和管理问题。以下是ZooKeeper的详细简介&#xff1a; 一、基本定义 ZooKeeper是一个分布式的、开放源码的分布式应用程序协调服务&a…

系统架构师考点--系统架构设计(下)

大家好。今天总结一下系统架构设计的最后一部分知识点。 一、软件系统的质量属性 软件系统的质量属性 软件系统的质量属性可分为开发期质量属性和运行期质量属性2个部分。 1、开发期质量属性主要指在软件开发阶段所关注的质量属性&#xff0c;主要包含6个方面&#xff1a; …

C++ 关键字与库函数 学习总结

sizeof与strlen 含义 sizeof&#xff1a;是一个操作符&#xff0c;用于计算数据类型或变量的大小&#xff08;以字节为单位&#xff09;。在编译时求值strlen&#xff1a; 是一个函数&#xff0c;用于计算字符串的长度&#xff08;不包括终止符 \0&#xff09;。在运行时求值不…