如何在Android中使用onKeyDown捕获应用程序切换键



我试图在android 3.1和4.0上捕获应用程序切换键和主键,但它似乎不像它的工作。

这是我正在做的

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
   if (KeyCode == KeyEvent.KEYCODE.KEYCODE_APP_SWITCH && event.getRepeatCount() == 0)
    { 
        Log.d ("onkeydown","app switch key");
    }
   else if (KeyCode == KeyEvent.KEYCODE.KEYCODE_HOME && event.getRepeatCount() == 0)
    { 
        Log.d ("onkeydown","home key");
    }
    //EDIT:
    return super.onKeyDown(keyCode, event);
}

我的日志。D语句不打印。有可能捕获这两个键吗?

使用正确的返回语句更新了代码

嗯。

嗯,不,你不能。

public static final int KEYCODE_HOME

自:API Level 1

键码常量:Home键。

此键由框架处理,并且永远不会交付给应用程序。

http://developer.android.com/reference/android/view/KeyEvent.html

这可以通过反射来实现。

属于android.os.ServiceManager类,具有辅助com.android.internal.statusbar.IStatusBarService,并且包含toggleRecentApps方法

然后试试这个方法

super。onKeyDown(keyCode, event)缺失,我想你应该试试这个:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
super.onKeyDown(keyCode, event);
   if (KeyCode == KeyEvent.KEYCODE.KEYCODE_APP_SWITCH && event.getRepeatCount() == 0)
    { 
        Log.d ("onkeydown","app switch key");
    }
   else if (KeyCode == KeyEvent.KEYCODE.KEYCODE_HOME && event.getRepeatCount() == 0)
    { 
        Log.d ("onkeydown","home key");
    }
    return true;
}

使用switch语句执行相同的操作:

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
    super.onKeyDown(keyCode, event);
        switch(keyCode)
        {
            case KeyEvent.KEYCODE_CAMERA:
             Toast.makeText(ListViewActivity.this, "Pressed Camera Button", Toast.LENGTH_SHORT).show();
                return true;
            case KeyEvent.KEYCODE_1:
             Toast.makeText(ListViewActivity.this, "Pressed 1", Toast.LENGTH_SHORT).show();
                return true;
            case KeyEvent.KEYCODE_HOME:
             Toast.makeText(ListViewActivity.this, "Pressed Home Button", Toast.LENGTH_SHORT).show();
                return true;
            case KeyEvent.KEYCODE_BACK:
             Toast.makeText(ListViewActivity.this, "Pressed Back Button", Toast.LENGTH_SHORT).show();
                finish();
                return true;
        }
        return false;
    }

相关内容

  • 没有找到相关文章

最新更新