1

我正在为 Android 开发一个主屏幕启动器应用程序。
现在,如果用户已经在主屏幕上,
我想要在用户按下主屏幕按钮时执行自定义操作。

我知道其他一些可以覆盖主页按钮的启动器,
例如 Go Launcher Ex。

我的代码是:

@Override
public boolean dispatchKeyEvent(KeyEvent event)
{
    int action = event.getAction();
    int keyCode = event.getKeyCode();

    switch (action)
    {
        case KeyEvent.ACTION_DOWN:
            switch (keyCode)
            {
                case KeyEvent.KEYCODE_HOME:
                    break;
            }
            break;

        case KeyEvent.ACTION_UP:
            switch (keyCode)
            {
                case KeyEvent.KEYCODE_HOME:
                    if (!event.isCanceled())
                        Log.i("TEST", "HOME");
                    break;
            }
            break;
    }

    return super.dispatchKeyEvent(event);
}

但是当我按下主页按钮时,什么也没有发生..

4

2 回答 2

1

启动器是某种活动。

所以我相信当用户按下主页按钮时你会获得焦点。我可以肯定地告诉你一件事。这个有可能!

您在 View 类中获得了 setOnFocusChanged()

于 2013-04-13T19:14:34.863 回答
0

参考这篇文章

抱歉,您无法“检测到主页键按钮按下事件”。

然而,在同一篇文章中,Idistic 建议这是一种解决方法:

long userInteractionTime = 0;

@Override
public void onUserInteraction() {
    userInteractionTime = System.currentTimeMillis();
    super.onUserInteraction();
    Log.i("appname","Interaction");
}

@Override
public void onUserLeaveHint() {
    long uiDelta = (System.currentTimeMillis() - userInteractionTime);

    super.onUserLeaveHint();
    Log.i("bThere","Last User Interaction = "+uiLag);
    if (uiDelta < 100)
        Log.i("appname","Home Key Pressed");    
    else
        Log.i("appname","We are leaving, but will probably be back shortly!");  
}
于 2013-04-13T19:09:25.703 回答