android+捕获home键方法

在Activity中接收按键事件方法是onKeyDown(int keyCode,KeyEvent event),而松开按键是onKeyUp方法。

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        switch (keyCode) {
 
            case KeyEvent.KEYCODE_FOCUS:
   Log.i(TAG, "doSnap: KeyEvent.KEYCODE_FOCUS");
                if (mFirstTimeInitialized && event.getRepeatCount() == 0) {
                    doFocus(true);
                }
                return true;
            case KeyEvent.KEYCODE_CAMERA:
  Log.i(TAG, "doSnap: KeyEvent.KEYCODE_CAMERA");
                if (mFirstTimeInitialized && event.getRepeatCount() == 0) {
                    doSnap();
                }
                return true;
            case KeyEvent.KEYCODE_DPAD_CENTER:
  Log.i(TAG, "doSnap:KeyEvent.KEYCODE_DPAD_CENTER");
                // If we get a dpad center event without any focused view, move
                // the focus to the shutter button and press it.
                if (mFirstTimeInitialized && event.getRepeatCount() == 0) {
                    // Start auto-focus immediately to reduce shutter lag. After
                    // the shutter button gets the focus, doFocus() will be
                    // called again but it is fine.
                    if (mHeadUpDisplay.collapse()) return true;
                    doFocus(true);
                    if (mShutterButton.isInTouchMode()) {
                        mShutterButton.requestFocusFromTouch();
                    } else {
                        mShutterButton.requestFocus();
                    }
                    mShutterButton.setPressed(true);
                }
                return true;
       case KeyEvent.KEYCODE_BACK:
  Log.i(TAG, "KeyEvent.KEYCODE_BACK");
  if(mCameraDevice!=null){
          mCameraDevice.sendCommand(CAMERA_CMD_FRONT_CAMERA, 0, 0); 
          mCameraDevice.sendCommand(CAMERA_CMD_BACK_CAMERA, 0, 0);
          finish();
  }
  return true;
       case KeyEvent.KEYCODE_HOME:
  Log.i(TAG, "KeyEvent.KEYCODE_HOME");
  if(mCameraDevice!=null){
          mCameraDevice.sendCommand(CAMERA_CMD_FRONT_CAMERA, 0, 0); 
          mCameraDevice.sendCommand(CAMERA_CMD_BACK_CAMERA, 0, 0);
          finish();
  }
  return true;
        }

return super.onKeyDown(keyCode, event);
    }

在按键中KeyEvent.KEYCODE_BACK返回键是可以直接监听的,但Home键是在framework监听,那么监听Home的方法就是:

第一:在Activity中加入,重写onAttachedToWindow,以实现屏蔽Home键.

@Override
    public void onAttachedToWindow() {
        this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
        super.onAttachedToWindow();
    }

第二在按键监听中加入Home键处理代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值