Android实现组合键监听功能
来源:互联网 发布:常用端口与对应的服务 编辑:程序博客网 时间:2024/04/29 01:30
有关组合监听的思路:两个键的点击其实是有先后顺序的,要先做第一个键点击的记录,如有时间要求还得记录时间。
下面是两个例子的代码:
例子1:长按音量变大的键,再按回退键一次,处发要处理的事件。
boolean isKeyvolume=false; @Override public boolean dispatchKeyEvent(KeyEvent event) { int eventAction = event.getAction(); int keyCode = event.getKeyCode(); if (eventAction == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_VOLUME_UP) { isKeyvolume=true; }else if(eventAction == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_VOLUME_UP){ isKeyvolume=false; }else if(eventAction == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_BACK){ if(isKeyvolume){ Toast.makeText(MainActivity.this,"000",Toast.LENGTH_LONG).show(); return true; } } return super.dispatchKeyEvent(event); }
例子2:长按音量变大的键,再长按回退键,处发要处理的事件。(长按时这个事件会触发多次,如果没有做双击退出应用就会出现退出应用的效果)
int mBackKeyAction, mVolumnUpKeyAction; long mActionTime; @Override public boolean dispatchKeyEvent(KeyEvent event) { int keyCode = event.getKeyCode(); int action = event.getAction(); if (keyCode == KeyEvent.KEYCODE_VOLUME_UP && event.getAction() == KeyEvent.ACTION_DOWN) { mVolumnUpKeyAction = KeyEvent.ACTION_DOWN; //记录按下状态 if (mActionTime == 0) { mActionTime = System.currentTimeMillis(); } } else if (keyCode == KeyEvent.KEYCODE_VOLUME_UP && event.getAction() == KeyEvent.ACTION_UP) { mVolumnUpKeyAction = KeyEvent.ACTION_UP; //记录松下状态 mActionTime = 0; }else if (keyCode == KeyEvent.KEYCODE_BACK && action == KeyEvent.ACTION_DOWN) { mBackKeyAction = KeyEvent.ACTION_DOWN; //记录按下状态 if (mActionTime == 0) { mActionTime = System.currentTimeMillis(); } } else if (keyCode == KeyEvent.KEYCODE_BACK && action == KeyEvent.ACTION_UP) { mBackKeyAction = KeyEvent.ACTION_UP; //记录松下状态 mActionTime = 0; } //长按,且Back键和音量变大键没松 if (isLongPress() && mBackKeyAction == KeyEvent.ACTION_DOWN && mVolumnUpKeyAction == KeyEvent.ACTION_DOWN) { //do something Toast.makeText(MainActivity.this, "TestTest", Toast.LENGTH_SHORT).show(); //事件不下发啦 return true; } return super.dispatchKeyEvent(event); } private boolean isLongPress() { if (System.currentTimeMillis() - mActionTime > 2000) { return true; } else { return false; } }
0 0
- Android实现组合键监听功能
- Android实现组合键监听功能
- Flex的组合键监听功能实现
- Android监听组合键
- Android监听组合键
- Android监听组合键
- [Android]在Android TV中实现组合按键的监听触发功能
- Android 实现通话监听功能
- JS实现键盘监听(包括组合键)
- JS实现键盘监听(包括组合键)
- JS实现键盘监听(包括组合键)
- javascript实现组合键功能
- android来电监听功能的实现
- Qt实现监听功能
- android 监听上下左右键的功能实现
- Android实现通话呼叫转移与监听通话录音功能
- 探讨Android实现后台(Service)按键监听的功能
- Android中短信监听的各种问题,实现监听短信的功能
- poj-1651 Multiplication Puzzle(区间dp入门)
- 计算机图形学(四)几何变换_4_二维复合变换_3_通用二维复合变换和计算效率
- OpenGL常用函数
- libnice
- RecyclerView的搜索
- Android实现组合键监听功能
- 二进制表示法中1的个数最多的整数 构造
- Notification示例
- /usr/local/nginx/logs/nginx.pid 路径下找不到nginx.pid
- 确保万得返回了数据
- JSON需要转义的字符
- iOS 开发--Objective-C 反射机制
- ssh远程执行命令退出
- InstallShield Limited Edition for Visual Studio 2013