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

问题描述

我尝试的方法存在的问题是,有几天我变得很奇怪,无法使用该设备,例如,凌晨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 (将#修改为@)