android - 如何在android(kotlin)中使用usageStatsManager获取“当天”的使用统计信息
问题描述
目标:
需要获取今天的使用统计信息(今天使用设备的总时间),即。上午 12 点至当前时间。
问题: 1.
我得到今天的时间 + 一些其他不可解释的时间2.不可解释
的时间戳(由 getTimestamp 方法检索的使用统计的开始和结束)
时间段不相关。我将开始时间定为上午 12 点,将结束时间定为当前时间,但是对于使用统计,我得到完全不相关的“.firstTimeStamp”和“.lastTimeStamp”(据说返回使用统计数据的开始和结束)。
*已经完成了权限授予部分,这是我用来获取总时间(以分钟为单位)的功能。
fun showtime(){
val time=Calendar.getInstance()
time.set(Calendar.HOUR_OF_DAY,0)
time.set(Calendar.MINUTE,0)
val start=time.timeInMillis
val end= System.currentTimeMillis()
val usageStatsManager = getSystemService(Context.USAGE_STATS_SERVICE) as UsageStatsManager
var stats = usageStatsManager.queryAndAggregateUsageStats(start,end)
var x:Long=0
var ft:Long=0
var v:Long=0
var l:Long=0
for ((key,value) in stats) {
ft=value.totalTimeInForeground/60000
textField1.append("$key = $ft mins")
textField1.append("\n")
x=x+ft
v=value.firstTimeStamp
l=value.lastTimeStamp
}
textView.setText("YOU SPENT $x mins.")
textView2.setText("${Date(v)} to \n${Date(l)}")
}
例如,当上述代码在 12 月 12 日星期三上午 12 点 40 分运行时,结果是:(
在 textView 中):
您花了 90 分钟
(在 textView2 中):
Tue 11 Dec 16:23:19 GMT +05:30 2018 to
Tue 12 月 11 日 19:38:45 GMT +05:30 2018
如何在短短 40 分钟内使用手机 90 分钟?
那些明显不相关的时间戳是什么意思?
我做错了什么来实现我的目标吗?
解决方案
我实际上遇到了类似的问题:
根据我对文档的理解,firstTimeStamp
应该lastTimeStamp
给出“这个 UsageStats 代表的时间范围的开始(结束)”。
然而,它们与我在queryAndAggregateUsageStats
asbeginTime
和中作为论点给出的不同endTime
。
同样,结果似乎宁愿返回由/totalTimeInForeground
给出的时间跨度的结果,而不是请求的结果。firstTimeStamp
lastTimeStamp
为此,我用谷歌填写了一个错误,请查看https://issuetracker.google.com/issues/118564471。
推荐阅读
- swift - XCUITest 在断言或测试失败后执行操作
- python - 一旦用户做出错误的选择,我如何让我的游戏链接回到起点
- android - AOSP 中的“预建”从何而来?
- c# - Ubuntu 上的 Mono 错误:System.DllNotFoundException:gtksharpglie-2
- kotlin - 在 kotlin 中使用委托时,为什么我会收到关于“智能演员”的错误?
- python - Numpy,以不同的顺序复制数据
- php - 使用 foreach 从数据库中输出数据
- ruby-on-rails - has_one 的形式,但并非总是如此
- reactjs - react-native:最终形式关注下一个字段
- c# - 检测两个独立动画之间的碰撞