Android - 如何计算很长一段时间的时间

时间:2011-02-08 14:37:09

标签: android time timer count accelerometer

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

例如,如果我设置的阈值为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);
    }

4 个答案:

答案 0 :(得分:6)

你的应用程序是否在前台?

开始时:

long start = System.currentTimeMillis();

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

结束时:

long end = System.currentTimeMillis();

然后:

long passedTime = end - start;

答案 1 :(得分:1)

每次超过阈值时都可以设置闹钟,当闹钟最终触发时,你可以随意做任何事情。

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

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);

答案 2 :(得分:0)

我认为您可能正在寻找一种双服务/活动解决方案,其中服务在后台运行,计算您想要计算的数量,并在活动要求时将此信息提供给活动。

就计算时间而言,这只是简单地操纵System.currentTimeMillis()的回报,就像DKIT Android指出的那样。

答案 3 :(得分:0)

您可以使用

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