所以我需要为 android 设备(变压器平板电脑)制作一个简单但可靠的秒表,其中 1 ms准确度。我对android没有任何经验。 在搜索之后,我没有找到关于在这个特定背景下可以获得的最大准确度的具体细节(如下所述)。也许这里的一些人可以给我我需要的信息。 由于秒表将用于时间反应和诊断1 ms是我们需要的准确度。
秒表应该做的很简单:
我甚至不需要显示标记或经过的时间并刷新显示。 除OS应用程序外,其他应用程序都不会运行。
理论上System.nanoTime()或时间戳会这样做。但是我不确定这是否会给我1毫秒的精确度。 他们可以给我我正在寻找的准确性吗?一个简短的解释是有用的。 还有其他方法吗? 如果某人是Android开发者,那么信息将非常受欢迎。
谢谢,
更新:尽管用户Nanno对Android操作系统中的限制提出了有效的观点,因此在“仅限平板电脑”的情况下无法实现1毫秒精度秒表,Julian的进一步答案描述了使用Android ADK(外部硬件)实现目标的有趣且相对便宜的解决方案。
答案 0 :(得分:1)
根据您当前的设置,我怀疑您是否可以获得此类准确性,原因只是因为users push a key or the screen
的不准确。
在您成功按下屏幕,捕获事件并调用该功能之前,您的准确性将会消失。特别是当您考虑nanoTime
时,界面会在您的测量中添加一个我不相信的随机因素。
Android不能运行实时程序,即使您没有在后台运行其他程序,系统也已准备就绪。它可以在后台广播意图或做其他意想不到的事情。当然,你的界面确实有优先权,但你的意思是准确吗?我不这么认为。
答案 1 :(得分:1)
一个< 1ms准确的Android秒表解决方案可以使用这样的东西来工作:
http://developer.android.com/guide/topics/usb/adk.html
将按钮连接到电路板,并在远程处理器中使用您的定时代码(AVR,使用arduino工具编程。对于嵌入式初学者非常容易)然后通过USB在Android平板电脑和开放式配件开发套件之间进行通信以显示平板电脑上的结果。
当然,如果您希望人们能够通过谷歌播放将其下载到世界各地的设备上,这个解决方案并不是那么有用......但是看到你提到了一个特定的设备,也许你只是想做这个项目适合自己吗?
在这种情况下,它是可行的,只是以非常迂回的方式。
答案 2 :(得分:0)
为什么不使用System.currentTimeMillis,你可以找到here一个写有秒精度的秒表示例。
答案 3 :(得分:0)
你应该先试试这个:
使用Android平板电脑但不使用Android操作系统,在按键和时钟停止之间获得1 ms的准确度是合理的。您应该为Android设备使用 UBUNTU 。
在此处获取:http://www.ubuntu.com/devices/android
关于代码,使用C ++高精度计时器。
设置应用并调用更高的优先级。
正如我所说,试试吧。你可以节省时间和金钱! (比开始购买外部硬件更好)
答案 4 :(得分:0)
关于使用System.currentTimeMillis作为秒表的一条评论,我一直试图在此应用程序中使用它,当用户更改开始和停止事件之间的时间时,它会失败。例如,当秒表开始计时5分钟时,当前时间可能是下午3:09。
然后,在下午3:11,用户可以将时间设置为一小时,即下午4:11。然后,5分钟后,秒表停止,并调用System.currentTimeMilli,它将在下午4:14返回。程序将减去两次并返回秒表经过的时间为1小时5分钟(而不是正确的5分钟)!!!