2014-09-25 4 views
0

У меня есть метод ввода, который имитирует нажатие клавиши, как например:Сымитированный Android KeyEvent - Фокус

ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, event)); 
ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, event)); 

С помощью этого метода можно открыть меню на устройстве с помощью KeyEvent.KEYCODE_MENU. После этого я попытаюсь отправить KeyEvent.KEYCODE_DPAD_UP и KeyEvent.KEYCODE_DPAD_DOWN, чтобы просмотреть меню, но основное внимание по-прежнему уделяется активности в фоновом режиме.

Так, например, когда я нахожусь на панели запуска, я открываю меню, но когда я нажимаю вверх или вниз, устройство просматривает приложения на моем главном экране вместо параметров в меню.

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

ответ

0

Ваш keyevent прилагается к основной деятельности вашего приложения. Один из способов, о котором я могу думать, - зарегистрировать обратный вызов активности всякий раз, когда у пользователя есть ввод на клавиатуре. Активность проверяет, поднято ли меню (это можно сделать с помощью флага). Если он обновит позицию выбора в меню.

+0

Я не думаю, что ключевое событие связано с моей основной деятельностью. Моя основная деятельность даже не началась. Ключевое событие отправляется из службы, которая расширяет InputMethodService. Я хочу иметь возможность просматривать меню и диалоги по всей системе, а не только в моих действиях. –