簡體   English   中英

Android 中觸摸顯示器和調用 onTouchEvent 之間的延遲有多大和一致性?

[英]How big and consistent is the delay between touching the display and the call to onTouchEvent in Android?

對於我的學士論文,我需要編寫一個 Android 應用程序,從用戶那里獲得非常精確和一致的反應時間(每一毫秒都很重要)。 它將用於心理學研究。 我正在使用 Android SDK 和 Java。

用戶可以“做出反應”的一種方式是觸摸顯示屏。

目前,我在onTouchEvent(event)回調中調用System.nanoTime() 我從中減去起始值(與System.nanoTime() 一起使用)以獲得反應時間。

但我擔心在用戶實際觸摸顯示器后系統調用此方法的速度、精確性和一致性(隨着時間的推移/在不同的設備上)。

我想到的可能問題:
a) 由於使用的硬件不同,不同設備上的延遲不同
b) 由於其他線程可以先執行而導致的延遲
c) Java 語言的高級特性 --> 您永遠不會真正知道(也無法控制)后台在什么時間/順序發生了什么。

我怎么知道這件事? 使用 NDK(C++) 可以幫助我獲得更准確和一致的值嗎? 謝謝!

我需要編寫一個 Android 應用程序,從用戶那里獲得非常精確和一致的反應時間(每一毫秒都很重要)

Android 不是實時操作系統 (RTOS)。

我想到的可能問題

你的前兩個是有效的。 嚴格來說,第三個不是,因為 Java 沒有比其他編程語言更多的“在后台發生”的東西。 但是,Java 本質上更慢,會增加延遲。

在大多數情況下,您還需要考慮可能正在運行的其他應用程序,因為它們也需要 CPU 時間,並且只有這么多 CPU 內核可以運行。

我怎么知道這件事?

你不會有一個很好的方法來衡量這個與人類參與者。 畢竟,如果您確切地知道用戶何時觸摸屏幕(以測量它與onTouchEvent()之間的時間),您只需使用該機制而不是onTouchEvent()

可以創建非人類參與者。 有些人創造了使用電容式觸控筆點擊屏幕的機器人。 理論上,如果您有很好的同步時鍾,您可以確定機器人點擊屏幕的時間以及您收到onTouchEvent()調用的時間。 擁有“良好同步的時鍾”本身可能很困難,而創造一個觸摸屏幕的機器人是它自己的工程實踐。

使用 NDK(C++) 可以幫助我獲得更准確和一致的值嗎?

我不知道您在這種情況下如何定義“准確”。 我不希望 NDK 有助於保持一致性。 它應該有助於最大限度地減少屏幕觸摸和您發現屏幕觸摸之間的延遲(使用游戲開發人員用來查找屏幕觸摸的任何基於 NDK 的工具)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM