检测正在按下哪些热键

时间:2012-12-29 06:04:24

标签: android hotkeys

如何检测正在按下哪个组合键?

例如,我想识别同时按下后退菜单按钮或任何组合键。

我想根据按下哪个键来打开我的应用程序。

2 个答案:

答案 0 :(得分:0)

正如Daniel Lew所说(Prompt user to save changes when Back button is pressed):

你不是在正确的轨道上;您应该做的是重写onKeyDown()并侦听返回键,然后覆盖默认行为:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
        // do something on back.
        return true;
    }

    return super.onKeyDown(keyCode, event);
}

如果你只支持Android 2.0及更高版本,他们会添加一个你可以使用的onBackPressed():

@Override
public void onBackPressed() {
    // do something on back.
    return;
}

这个答案基本上是从这篇博文中摘录的:http://android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html

答案 1 :(得分:0)

我做了一个简单的研究,找到了这个解决方案,它可能会起作用。您可以检测以下代码按下的菜单键。

public boolean onKey(View v, int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_MENU && event.getAction() == KeyEvent.ACTION_DOWN) {
            //Start a new thread here and run a while loop for listening to "back pressed" and trigger the event you want if the back button is pressed 
        } else {
            //stop the started thread above
            return false;
        }
    }

希望这可能会对你有所帮助。 Thnks。