我基本上试图实现的是自定义全局热键,换言之,当我按下某些按钮时,无论当前哪个程序在最前面,都会发生这种情况。
我假设需要一项服务。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)中并启动所述服务,则不会发生任何事情。 (需要一些权限?) 任何建议,我哪里出错了?或者更好地捕获哪个按钮被按下?
谢谢!
hiii 如果你有这个解决方法,然后plz让我knw。 – 2012-02-13 08:08:56
@Vincent Romain Guy在Android团队工作,他说这是[不可能](http://stackoverflow.com/a/3455094/942821)。和Fizz,你能接受Romain的回答吗? – 2012-07-09 14:51:56
可能的重复[是否有可能创建一个监听硬件按键的Android服务?](http://stackoverflow.com/questions/2986337/is-it-possible-to-create-an-android-service-即听 - 硬件密钥压力) – isalgueiro 2015-02-20 12:20:37