onKeyDown в сервисе? (Глобальные Горячие клавиши)

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

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

public boolean onKeyDown(int keyCode, KeyEvent event) {
    char pop;
    pop = (char)event.getUnicodeChar();
    Toast.makeText(this, Character.toString(pop) , Toast.LENGTH_SHORT).show();
    return super.onKeyDown(keyCode, event);
  }

Но очевидно если я изменяю окно или вхожу в текстовое поле, оно не работает. Если я засовываю его непосредственно на службу (или imputmethodservice), и запуск сказал, что сервис ничего не происходит. (Некоторые полномочия требуются, возможно?) Какие-либо предложения, где я иду не так, как надо? Или лучший способ получить, какая кнопка нажимается?

Спасибо!

18
задан Fizz 11 August 2010 в 01:36
поделиться