Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Timer Android操作系统中秒表的准确度如何?_Timer_Android_Stopwatch - Fatal编程技术网

Timer Android操作系统中秒表的准确度如何?

Timer Android操作系统中秒表的准确度如何?,timer,android,stopwatch,Timer,Android,Stopwatch,因此,我需要为android设备(transformer平板电脑)制作一个简单但可靠的秒表,精度1ms。我对安卓一点经验都没有。 在搜索之后,我没有找到任何关于在这个特定上下文中我能获得的最大准确度的细节(如下所述)。也许这里有人能给我所需要的信息。 由于秒表将用于时间反应和诊断,因此我们需要1ms的精确度 秒表的功能非常简单: 显然,该计划从00:00.000开始,从那时起将采取7项措施。当用户按下一个键或屏幕时,程序应记录经过的时间。第七次时,程序将把测量值保存在txt文件中 我甚至不需

因此,我需要为android设备(transformer平板电脑)制作一个简单但可靠的秒表,精度1ms。我对安卓一点经验都没有。 在搜索之后,我没有找到任何关于在这个特定上下文中我能获得的最大准确度的细节(如下所述)。也许这里有人能给我所需要的信息。 由于秒表将用于时间反应和诊断,因此我们需要1ms的精确度

秒表的功能非常简单:

  • 显然,该计划从00:00.000开始,从那时起将采取7项措施。当用户按下一个键或屏幕时,程序应记录经过的时间。第七次时,程序将把测量值保存在txt文件中
我甚至不需要显示戳记或经过的时间并刷新显示。 除了操作系统应用程序,没有其他应用程序将运行

理论上,System.nanoTime()或timestamp可以做到这一点。但我不确定这是否能给我所需的1ms精度他们能给我想要的准确度吗?简短的解释会很有用。 还有其他方法吗? 如果有人是安卓开发者,这条信息会让人非常感激

谢谢


更新:尽管用户Nanno对Android操作系统的局限性提出了正确的观点,从而使1毫秒精度的秒表在“仅平板电脑”场景中不可能实现,但朱利安的进一步回答描述了一个有趣且相对便宜的解决方案,以使用Android ADK(外部硬件)实现这一目标

为什么不使用System.currentTimeMillis,您可以找到一个具有毫秒精度的秒表示例

根据您当前的设置,我怀疑您能否获得这种准确性,仅仅是因为
用户按键或屏幕不准确

在您成功地按下屏幕、捕获事件并调用函数之前,您的准确性将会降低。特别是当你想到
nanoTime
时,界面在你的测量中添加了一个我不相信的随机因素


Android不是用来运行实时程序的,即使你没有在后台运行其他程序,系统也已经准备好了。它可以在后台广播意图或做其他意想不到的事情。。当然,你的界面确实有优先权,但有你所暗示的准确性吗?我不这么认为。

你应该先试试这个:

使用android平板电脑时,按键和时钟之间的准确度为1ms是合理的,但使用android操作系统时,则不可能。你应该在android设备上使用UBUNTU

在这里获取:

关于代码,使用C++高精度定时器。< /P> 将应用程序和呼叫设置为更高优先级


正如我说的,试试看。你可以节省时间和金钱!!(比开始购买外部硬件更好)

关于使用System.currentTimeMillis作为秒表的一条评论,我一直尝试在这个应用程序中使用它,当用户更改启动和停止事件之间的时间时,它失败了。例如,当秒表开始计时5分钟事件时,当前时间可能是下午3:09


然后,在下午3:11,用户可以将时间提前一小时设置为下午4:11。然后,5分钟后,秒表停止,并调用System.currentTimeMilli's,它将在下午4:14返回。程序将减去两次,并返回一个1小时5分钟的秒表运行时间(而不是正确的5分钟)

因为System.currentTimeMillis提供的是毫秒精度而不是毫秒精度,所以您认为点击活动上的某个按钮将始终向@mariomario中的onClick()方法发送消息,因为System.currentTimeMillis提供的是毫秒精度而不是毫秒精度accuracy@JulianHigginson你没有任何意义。把问题再读一遍。谢谢,我看过你的问题了。如果我提出的问题对您没有任何意义,那么您确实需要考虑一下实时软件的实际含义。您担心计时器子系统的准确性。我的建议是,如果在用户生成消息时,您没有比触摸事件处理程序更准确的方法将消息发送到计时器子系统,那么计时器子系统的准确性并不重要。非常感谢您的回答。自我解释。是的,遗憾的是,这似乎根本不可能,也没有解决办法。再往前走一点。。您认为在我的问题中描述的场景中可以达到的准确度范围是多少?问题是它是不可预测的。我怀疑(但在这里只是客串而已!)这可能是关于你能得到正确答案的ms。但是为了避免准确度/精密度的混淆,我认为谈论ms和反应时间真的很难,因为人类无法用ms精密度做出反应。如果我们谈论的是触摸事件与时钟停止,当然,你可能会得到不到1ms的余量,但在实际触摸之前,你的反应时间会损失很多?我有点困惑,因为你说的“ms”不确定你是指“一ms”。我会尽力澄清这一点。对视觉刺激(去/不去)的典型反应可能在180和220毫秒左右。两个人之间大约20或30毫秒的差异代表不同的大脑功能。拥有1毫秒精度的秒表的目的是避免测量中的误差和噪音,这些误差和噪音不是个人性能的一部分,而是由于系统性能(硬件、软件)造成的。当然,人们可以接受更大程度的错误,但这也意味着诊断的准确性更低。我想说,在大多数情况下(系统不忙),用大约2毫秒的误差幅度进行测量就足够了。但这些都是猜测。“我们”h