昨天接到一个任务,要做一下组合键长按监听事件。

由于Android设备是自家的,有点搓,系统代码根本没有区分长按和短按功能。

只能应用层通过diapatchKeyEvent函数实现。


话不多说,代码如下,


 @Override    public boolean dispatchKeyEvent(KeyEvent event) {        int keyCode = event.getKeyCode();        int action = event.getAction();        if (keyCode == KeyEvent.KEYCODE_BACK && action == KeyEvent.ACTION_DOWN) {            mBackKeyAction = KeyEvent.ACTION_DOWN;  //记录按下状态            if(mActionTime == 0 ) {                mActionTime = System.currentTimeMillis();            }        }        if (keyCode == KeyEvent.KEYCODE_BACK && action == KeyEvent.ACTION_UP) {            mBackKeyAction = KeyEvent.ACTION_UP;  //记录松下状态            mActionTime = 0;        }        if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER && event.getAction() == KeyEvent.ACTION_DOWN) {            mOkKeyAction = KeyEvent.ACTION_DOWN;   //记录按下状态            if(mActionTime == 0 ) {                mActionTime = System.currentTimeMillis();            }        }        if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER && event.getAction() == KeyEvent.ACTION_UP) {            mOkKeyAction = KeyEvent.ACTION_UP;    //记录松下状态            mActionTime = 0;        }        //长按,且Back键和OK键没松        if (isLongPress() && mBackKeyAction == KeyEvent.ACTION_DOWN && mOkKeyAction == KeyEvent.ACTION_DOWN) {            //do something        }        return super.dispatchKeyEvent(event);    }        private boolean isLongPress() {        if (System.currentTimeMillis() - mActionTime > 3000) {            return true;        } else {            return false;        }    }



   

更多相关文章

  1. IBM详解 Android(安卓)的 Activity 组件
  2. Android通过selector改变界面状态
  3. Android各种访问权限Permission详解
  4. Android实现列表单选和多选,ListView+CheckedTextView
  5. android button 基本原理
  6. android与sqlite的连接(增、删、查、改)
  7. android耳机状态的检测
  8. android 获取屏幕高度,宽度,状态栏高度
  9. Android开发学习笔记:浅谈ToggleButton

随机推荐

  1. Android:资源 id 及使用getIdentifier()获
  2. 利用第三方jar包jaudiotagger实现与Media
  3. Android中使用httpclient等小结
  4. Android反编译工具绿色版V2.1(改进版)
  5. android 温故知新之fragment中易忽视的on
  6. GitHub 优秀的 Android 开源项目(值得研
  7. Android(安卓)arm64(aarch64)中的so注入(
  8. Android访问权限大全
  9. android多媒体播放源码解析
  10. Android获取其他包的Context实例然后干坏