Android平板电脑无法触发KeyboardEvent.KEY_DOWN

时间:2012-02-28 21:24:43

标签: android actionscript-3 flex mobile air

我正在尝试证明Android主屏幕按钮的默认功能,但是当我按下我的平板电脑的主页键时,KeyboardEvent.KEY_UP事件不会触发。 (eee变压器prime)是否有另一个原因来检测和停止此功能?
这是我试图用户的代码

import mx.events.FlexEvent;

        // Add the hardware key event handlers to the stage.
        protected function appCompleteHandler(event:FlexEvent):void {
            stage.addEventListener(KeyboardEvent.KEY_DOWN, handleButtons,false, 1);
            stage.addEventListener(KeyboardEvent.KEY_UP, handleButtons,false, 1);
        }

        // Event handler to handle hardware keyboard keys.
        protected function handleButtons(event:KeyboardEvent):void
        {
            trace("Event fired");
            if (event.keyCode == Keyboard.HOME) {
                event.preventDefault();
                trace("home");
            } else if (event.keyCode == Keyboard.BACK) {
                // Hanlde back button.
                event.preventDefault();
                trace("back");
            }

        }

2 个答案:

答案 0 :(得分:1)

主页按钮是一个不允许拦截的特殊按钮。您的代码是正确的,但是一旦KEY_UP事件发生,您的应用将暂停并停止,没有机会对KEY_UP做出反应。

然而,有一种间接的方式。虽然您无法阻止HOME键工作,但您可以进行自己的HOME活动。第一次运行它时,系统会询问您要将哪个活动用作HOME。从那里你要做的就是添加一个按钮,一旦你输入密码,就会启动真正的家庭活动。

有关详细信息,请查看此问题的答案:Android - Is It possible to disable the click of home button

答案 1 :(得分:0)

试试这个:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_HOME)) {
        doSomethingHere();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}