如何找出夜间设备的不活动时间以及开始结束时间?

问题描述

我尝试的方法存在的问题是,有几天我变得很奇怪,无法使用该设备,例如,凌晨3点,这个人通常在凌晨12点睡觉,声称自己没有使用该设备。设备。以下逻辑有什么问题,或者系统正在触发随机事件?

我尝试使用UsageEvents,发现时间戳记之间ACTIVITY_PAUSED的事件之间的时间间隔最大

其他任何事件似乎都不起作用,例如USER_INTERACTEDSCREEN_INTERACTION_ONSCREEN_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 (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...