Как обработать нажатия кнопок в реальном времени?

Переопределил метод dispatchKeyEvent в Activity для обработки нажатия кнопок громкости.
При очень быстром нажатии кнопки уменьшения громкости (5 раз в секунду где-то), метод не вызывается. При снижении темпа все события (KeyEvent) приходят (включая те, которые "подвисли" при большом темпе). При этом сами события созданы именно в момент нажатия кнопки (getEventTime возвращает вполне правдивые значения).

С кнопкой увеличения громкости таких проблем не замечено. Проверил на эмуляторе 4.1, и на телефоне 5.1. Даже системный регулятор громкости подвержен такому эффекту.

Может есть способ заставить Activity принудительно обработать накопившуюся очередь, по таймеру например?
  • Вопрос задан
  • 672 просмотра
Пригласить эксперта
Ответы на вопрос 1
@jkotkot
режим сарказма
Я не мастер андроида, но судя по всему, громкость меняется небыстро и, поэтому, менять ее нужно в отдельном потоке. Ну или какая-то очередь обработки.. например если пришло уже новое задание, то предыдущее отменяем и сразу меняем громкость на какой-то другой уровень.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы