0

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

秒表应该做的很简单:

  • 显然,程序从 00:00.000 开始,从那里将采取 7 项措施。当用户按下按键或屏幕时,程序应记录经过的时间。在第 7 次,程序会将测量值保存在 txt 文件中。

我什至不需要显示印章或经过的时间并刷新显示。除了操作系统应用程序,没有其他应用程序将运行。

理论上 System.nanoTime() 或时间戳会做到这一点。但我不确定这是否会给我所需的 1 毫秒精度。他们能给我我正在寻找的准确性吗?一个简短的解释会很有用。还有其他方法吗? 如果有人是 android 开发人员,我们将不胜感激。

谢谢,

更新:尽管用户 Nanno 对 Android 操作系统的限制提出了一个有效的观点,因此在“仅限平板电脑”的情况下不可能实现 1 毫秒精度秒表,朱利安的进一步回答描述了一个有趣且相对便宜的解决方案来实现使用该目标的目标Android ADK(外部硬件)。

4

5 回答 5

1

使用您当前的设置,我怀疑您能否获得这种准确性,仅仅是因为users push a key or the screen.

在您成功推送屏幕、捕获事件并调用函数之前,您的准确性将会下降。尤其是当您考虑时nanoTime,界面会在您的测量中添加一个我不相信的随机因素。

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

于 2012-05-11T06:45:11.210 回答
1

可以使用以下方法使 <1ms 准确的 android 秒表解决方案工作:

http://developer.android.com/guide/topics/usb/adk.html

将按钮连接到板上,并将您的时序代码放入远程处理器(AVR,使用 arduino 工具编程。对于嵌入式初学者来说非常容易)然后通过 USB 在 android 平板电脑和开放式附件开发套件之间进行通信,以在药片。

当然,如果您希望人们能够从 google play 将它下载到他们在世界各地的设备上,这个解决方案当然不是很有用......但是看到您提到了一个特定的设备,也许您只是想让这个项目用于你自己?

在那种情况下,它是可行的,只是以一种非常迂回的方式。

于 2012-05-11T07:16:45.443 回答
0

为什么不使用 System.currentTimeMillis,你可以在这里找到一个秒表的例子,它写成具有毫秒精度。

于 2012-05-11T06:15:36.907 回答
0

你应该先试试这个:

使用您的 android 平板电脑但不使用 android OS 在按键和时钟停止之间获得 1 ms 的准确度是合理的。你应该在安卓设备上使用UBUNTU

在这里得到它:http ://www.ubuntu.com/devices/android

关于代码,使用 C++ 高精度计时器。

将应用程序和呼叫设置为更高的优先级。

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

于 2012-05-13T10:05:36.927 回答
0

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

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

于 2012-06-18T22:45:12.000 回答