【问题标题】:Android - How to count time over a long periodAndroid - 如何长时间计算时间
【发布时间】:2011-02-08 14:37:08
【问题描述】:

在我的应用中,我想测量加速度计处于静止状态的时间量。

例如,如果我将阈值设置为 0.4 m/s 并且加速度计速度始终低于此值,则意味着手机处于静止状态(阈值用于考虑值的抖动)。

我希望能够计算手机处于静止状态的时间,并在达到一定的静止时间时,然后对该事件做出反应。

我的加速度计已经正常工作了,我只需要计算这个时间,我不熟悉如何做到这一点,有人可以帮我吗?在此先感谢

解决方案:

  start = System.currentTimeMillis();

    if (vectorTotal > 10.1 || vectorTotal < 9.5){
        timelimit = (System.currentTimeMillis()+ 10000);
    }
    else if (start >= timelimit){
        checkUser();
        timelimit = (System.currentTimeMillis()+ 10000);
    }

【问题讨论】:

    标签: android time timer count accelerometer


    【解决方案1】:

    你的应用在前台吗?

    开始时:

    long start = System.currentTimeMillis();
    

    如有必要,将此值保存在数据库或首选项中。

    结束:

    long end = System.currentTimeMillis();
    

    然后:

    long passedTime = end - start;
    

    【讨论】:

    • 在alarmmanager 类遇到一些小问题后,我尝试了这种方式,没有问题就简单多了,干杯!
    【解决方案2】:

    您可以在每次超过阈值时设置警报,当警报最终触发时,您可以随心所欲。

    开始活动时执行以下操作:

    am = (AlarmManager) getSystemService(ALARM_SERVICE);
    timeoutInMillis = 60000;
    Intent timeoutIntent = <create the intent you want to run here>;
    timeoutPendingIntent = PendingIntent.getService(this, 0, timeoutIntent, PendingIntent.FLAG_UPDATE_CURRENT);
    

    然后每次加速度计高于您的阈值:

    am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + timeoutInMillis, timeoutPendingIntent );
    

    退出活动时不要忘记清除警报:

    am.cancel(timeoutPendingIntent);
    

    【讨论】:

    • 感谢 getekha 的回答,非常有帮助,当我不再需要警报管理器并取消注册我的听众时,我遇到了一些问题,即使使用 am,1 个警报始终保持设置.cancel 在同一个 pendingIntent 上,所以使用了 DKITandroid 的方法。为代码示例点赞!
    【解决方案3】:

    我认为您可能正在寻找双重服务/活动解决方案,其中服务在后台运行,计算您想要计算的任何内容,并在活动请求时提供此信息。

    就计算时间而言,正如 DKIT Android 指出的那样,这只是操纵来自System.currentTimeMillis() 的返回。

    【讨论】:

      【解决方案4】:

      你可以使用

      在服务中,您监听来自加速度计的事件,在每个事件上您取消之前的警报并设置新的。达到一定时间后 - 你会从警报中获得意图。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-20
        • 2016-03-26
        • 1970-01-01
        相关资源
        最近更新 更多