如何解决如何找出夜间设备的不活动时间以及开始结束时间?
我尝试的方法存在的问题是,有几天我变得很奇怪,无法使用该设备,例如,凌晨3点,这个人通常在凌晨12点睡觉,声称自己没有使用该设备。设备。以下逻辑有什么问题,或者系统正在触发随机事件?
我尝试使用UsageEvents
,发现时间戳记之间ACTIVITY_PAUSED
的事件之间的时间间隔最大
其他任何事件似乎都不起作用,例如USER_INTERACTED
,SCREEN_INTERACTION_ON
,SCREEN_INTERACTION_OFF
我用它来粗略估计Assuimg人最近几天的睡眠时间。
这是我的代码
UsageEvents.Event currentEvent;
UsageEvents usageEvents = mUsageStatsManager.queryEvents(start,end);
List<UsageEvents.Event> events = new ArrayList<>();
while (usageEvents.hasNextEvent()) {
currentEvent = new UsageEvents.Event();
usageEvents.getNextEvent(currentEvent);
if ((currentEvent.getEventType() == UsageEvents.Event.ACTIVITY_PAUSED)) {
events.add(currentEvent);
}
}
long startSleep=0;
long endSleep=0;
long sleepTime = 0;
Collections.sort(events,(s1,s2) -> Long.compare(s1.getTimeStamp(),s2.getTimeStamp()));
for (int i = 0; i < events.size() - 1; i++) {
UsageEvents.Event event0 = events.get(i);
UsageEvents.Event event1 = events.get(i + 1);
if (event1.getTimeStamp() - event0.getTimeStamp() > sleepTime) {
startSleep = event0.getTimeStamp();
endSleep = event1.getTimeStamp();
sleepTime = event1.getTimeStamp() - event0.getTimeStamp();
}
}
SleepModel sleepModel = new SleepModel();
sleepModel.setDifference(sleepTime);
sleepModel.setEndTime(endSleep);
sleepModel.setStartTime(startSleep);
return sleepModel;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。