Home键系统保留,无法通过onKeyDown监听,但可在onDestroy或onStop中处理,因为按back会进入onDestroy,按home会进入onStop,因此,对于home键客按以下方式处理: @Override protected void onPause() { Log.v(LOG_TAG, "onPause: "); SystemProperties.set("ts.config.calibrate", "break"); AndroidCalibrate.this.finish(); super.onPause(); } |
---------------------------------------------------
开发过程中相信大家都有碰到因为不能捕获Home键而烦恼,现在终于有办法了,在Level5以上(包含)中,Activity类中有如下方法:
public void onAttachedToWindow ()
Since: API Level 5
Called when the main window associated with the activity has been attached to the window manager. See View.onAttachedToWindow() for more information.
See Also
* onAttachedToWindow()
- private boolean catchHomeKey = false;
- @Override
- public void onAttachedToWindow() {
- // TODO Auto-generated method stub
- if(catchHomeKey) {
- this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
- }
- super.onAttachedToWindow();
- }
- @Override
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- // TODO Auto-generated method stub
- if(keyCode == KeyEvent.KEYCODE_HOME) {
- Log.e(TAG, "Home key down");
- }
- return super.onKeyDown(keyCode, event);
- }
重写Activity中的onAttachedToWindow方法,设置Type,就能捕获到Home键。
当不需要捕获时,删除setType这一行就OK。
--------------------------------------------------------
// 屏蔽Home键 // @Override // public void onAttachedToWindow() { // this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); // super.onAttachedToWindow(); // } |