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

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

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

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

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

Войти через центр авторизации
Похожие вопросы
Почта Банк Москва
от 207 000 до 240 000 ₽
SoftAge Новосибирск
До 150 000 ₽
C.Nord Санкт-Петербург
от 100 000 ₽
25 мая 2020, в 15:37
5000 руб./за проект
25 мая 2020, в 15:35
1000 руб./за проект