我寫了一個Android應用程序,捕獲所有TouchEvents(例如DOWN,UP,MOVE ..)並將其轉儲到日誌文件中。Android觸摸事件會被濾除?
應用正常工作與真實人體觸摸,以每秒1-> 5觸摸的速度。但是,當我使用以每秒100-> 500次左右的速度運行的機械觸摸發生器時,日誌文件顯示的觸摸次數比實際生成的次數少。
看着記錄在與每個觸摸事件的時間戳日誌文件中的接觸後,我發現事件的一個很奇怪的圖案由應用程序捕獲。總是有2個連續的事件相距2毫秒,接下來是大約50毫秒後的另一個事件。
例如: 第一事件發生時在第十毫秒
第二事件發生在12毫秒,這是後2毫秒第一
第三事件發生在第62毫秒,這是第一個之後50毫秒
第四事件發生在第64毫秒,這是2毫秒的第一
然後下一個事件發生在第104個毫秒...然後106噸後^ h ...等等
找遍周圍大約有沒有運氣的問題。不過,我發現Android允許雙擊,但不允許超過2次連續觸摸。這意味着你可以有兩個連續的觸摸非常接近對方,但不超過2.我的猜測是屏幕驅動程序禁用第3,第4 ....觸摸即使一段時間(非常可能50毫秒),直到它允許下一個事件再次發生。這樣做的原因是假設人類不能觸及得太快,並且應該禁用這種觸摸並將其視爲錯誤/噪聲。
注意,這是多點觸控不同,因爲我說的是連續的事件發生在不同的時間點(即使那些非常接近),以非常快的速度,而不是多點觸摸事件在多點觸控同一時間發生。
我想問一下,如果任何一個知道爲什麼會有這樣的過濾機制?以及如何在完全可能的情況下禁用它們?我的目標是試圖以儘可能高的速度記錄儘可能多的觸摸事件。
我真的很感激,如果任何人能確認/ fasify我的假設,或者幫助我去周圍的Android應用過濾器。
非常感謝閱讀一路這一點:)。
Android的過程觸摸事件一樣,因爲它可以在UI線程上做額外的工作。這個機械時間發生器是什麼?從來沒有聽說過。你所觀察到的與時間分割有什麼關係?記住,UI線程必須與其他線程共享的CPU,你的流程只是衆多之一。 –
我的機械觸摸發生器只是一個帶有電容錘的旋轉輪,以高速點擊屏幕。當我有5個錘子在輪子上並以每秒100轉的速度旋轉輪子時,它會產生每秒500次觸摸。 您能否解釋更多關於設備可以執行的處理事件的限制? 順便說一下,我正在測試三星10.1 Galaxy Tab,如果有幫助。 – Callitaday