在我的应用中,我想测量加速度计静止的时间。
例如,如果我设置的阈值为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);
}
答案 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)
您可以使用
在服务中,您可以通过加速度计监听事件,在每次事件中取消上一次警报并设置新事件。在达到一定的时间后 - 你会从警报中获得意图。