我试图在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语句不打印。有可能捕获这两个键吗?
使用正确的返回语句更新了代码
嗯。
嗯,不,你不能。
http://developer.android.com/reference/android/view/KeyEvent.htmlpublic static final int KEYCODE_HOME
自:API Level 1
键码常量:Home键。
此键由框架处理,并且永远不会交付给应用程序。
这可以通过反射来实现。
属于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;
}