Мне нужно написать приложение для Android, которое получает очень точное и согласованное время реакции (имеет значение каждая миллисекунда) от пользователя
Android не является операционной системой реального времени (ОСРВ).
Возможные проблемы, которые я имею в виду
Ваши первые два действительны.Третий, строго говоря, не в том, что в Java нет ничего более «происходящего в фоновом режиме», чем в других языках программирования.Однако Java по своей сути медленнее, добавляя задержку.
В большинстве случаев вам также необходимо учитывать другие приложения, которые могут работать, так как они тоже будут нуждаться в времени ЦП, и имеется очень много ядер ЦП.ходить вокруг.
Как я могу узнать об этом?
У вас не будет отличного способа измерить это с человеком-участником.В конце концов, если бы вы точно знали, когда пользователь коснулся экрана (чтобы измерить время между ним и onTouchEvent()
), вы просто использовали бы этот механизм вместо onTouchEvent()
.
Возможно создать нечеловеческого участника.Есть люди, которые создали роботов, которые используют емкостный стилус для нажатия на экран.Теоретически, если у вас есть хорошо синхронизированные часы, вы можете определить время, когда робот коснулся экрана, и время, когда вы получаете вызов onTouchEvent()
.Иметь "хорошо синхронизированные часы" само по себе может быть сложно, а создание робота, который касается экрана, - это его собственное инженерное упражнение.
Может ли использование NDK (C ++) помочь мне получить более точные и последовательные данные?значения?
Я не знаю, как вы определяете «точный» в этом сценарии.Я не ожидал бы, что NDK поможет с последовательностью.Это должно помочь минимизировать задержку между касанием экрана и вашими данными об этом касании экрана (используя любые средства на основе NDK, которые разработчики игр используют для определения касаний экрана).