Настройка частоты дискретизации сенсорного ввода на Android


На Android есть ли способ регулировки частоты дискретизации сенсорного ввода?

2 6

2 ответа:

Вы не можете остановить систему, генерирующую эти события, однако вы можете выборочно игнорировать некоторые из событий ACTION_MOVE, поскольку вы увидите до 60 в секунду, каждое из которых сообщает одни и те же координаты.

Вы можете обрабатывать только эти события ACTION_MOVE через заданное время с момента последнего события, или перейти к каждому 5-му или 10-му событию и т. д. Вам придется поэкспериментировать и посмотреть, что для вас лучше всего работает.

Просто убедитесь, что вы не пропускаете ACTION_UP, иначе ваше приложение может попасть в перепутанное состояние с прикосновений.

Я предполагаю, что вы пытаетесь отрегулировать скорость, как вы имеете дело с функцией onTouch.

    public boolean onTouch(View v, MotionEvent event) {
        switch(event.getAction()){
              case MotionEvent.ACTION_DOWN:
                  downTime = event.getDownTime();
                  // Do something you want to.
                  break;
              case MotionEvent.ACTION_MOVE:
              case MotionEvent.ACTION_UP:
                  eventTime = event.getEventTime();
                  if(eventTime - downTime > 25){
                       // Do something you want to.
                  }
                  break;
        }
    }

Вы должны объявить переменную длительного простоя и eventTime в своем классе. Также единицей их является МС. Надеюсь, это вам поможет.

2011/7/20 Может быть, вы можете попробовать:

    Tread.sleep(time);

Посмотреть, если это помогает.