android虚拟按键实现,虚拟按键的实现
8.6 虚拟按键的实现
虚拟按键(Virtual Key)是Eclair版本开始增加的新特性。Virtual
Key的功能是利用触摸屏,模拟按键发生的事件,这样就可以利用触摸屏的边缘,实现一些可以自定义的按键效果。
虚拟按键的实现效果如图8-5所示。
图8-5 虚拟按键的实现效果
在Android系统中,触摸屏设备发送的是RawInputEvent(原始输入事件),而按键发送的是KeyEvent(按键事件)。KeyEvent直接发送给应用程序层,RawInputEvent在Android的Java框架中被转换成MotionEvent发送给应用程序层。
在Android系统中虚拟按键的实现方法是:在某种情况下,将RawInputEvent转换成KeyEvent。
frameworks/base/services/Java/com/android/server目录中的InputDevice.Java文件负责处理虚拟按键的主要文件。
虚拟按键的处理相对简单,需要根据以下文件对虚拟按键的内容进行配置:
/sys/board_properties/virtualkeys.{devicename}
在InputDevice.Java文件中通过readVirtualKeys,对进行消息的转化。根据配置文件将RawInputEvent转换成按键相关的内容。
virtualkeys.{devicename}是虚拟按键的适配文件,需要在目标文件系统的/sys/board_
properties/目录中。
虚拟按键配置文件的格式如下所示:
0x1:扫描码:X:Y:W:H:0x1: ……
例如,在MSM的mahimahi平台上查看虚拟按键的配置文件如下所示:
# cat /sys/board_properties/virtualkeys.synaptics-rmi-touchscreen
0x01:158:55:835:90:55:0x01:139:172:835:125:55:
0x01:102:298:835:115:55:0x01:217:412:835:95:55
由此可见,其中定义了4个区域的虚拟按键,它们的Y坐标相同,可见4个按键的矩形区域位于水平的一排。其转换的扫描码分别为158,139,102,217,分别对应于BACK(返回),MENU(菜单),HOME(主界面),SEARCH(搜索)这4个按键。
另外一个系统的虚拟按键的配置文件如下所示:
$ cat /sys/board_properties/virtualkeys.qtouch-touchscreen
0x01:139:90:936:116:104:0x01:102:252:936:
116:104:0x01:158:402:936:116:104
其转换的扫描码分别为:139,102,158,分别对应于MENU(菜单),HOME(主界面),BACK(返回)这3个按键。
提示:使用虚拟按键转换成为的是按键的扫描码,不是按键码,因此依然需要经过按键布局文件的转化才能得到按键码。
android虚拟按键实现,虚拟按键的实现相关推荐
- android 隐藏手机底部虚拟按键
今天,简单讲讲android如何隐藏手机下面的虚拟按键. 其实,自己在做界面适配时,老是发现了华为手机存在适配的问题,主要就是华为手机有一个底部的虚拟按键占用了界面的部分空间,所以在网上搜索了如何隐藏 ...
- 关于Android全面屏与虚拟按键适配问题
随着手机不断更新换代,从物理按键到虚拟按键到全面屏都需要去适配. 1. 最简单的虚拟按键适配: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES. ...
- 如何隐藏Android模拟器下方的虚拟按键(隐藏模拟器属性即可)
如何隐藏Android模拟器下方的虚拟按键(隐藏模拟器属性即可) 在我们做屏幕适配的时候,就务必需要使用模拟器进行适配.但是在编辑的过程中,总是发现令人恶心的黑不溜秋的虚拟按键,很影响我们进行屏幕适配 ...
- android 虚拟键盘改变单个按键颜色_这款机械键盘很特别!一亿次按键寿命还有高颜值...
电脑主机要上RGB,那外设自然不能落下,虽说没有60%性能加成,用炫酷的灯光点亮桌面的感觉也是不错的.德国老牌外设品牌--冰豹(ROCCAT)2018年发布了Vulcan系列机械键盘,凭借着独特的设计 ...
- 小米等安卓手机屏蔽实体按键和虚拟按键
小米手机屏蔽和开启实体按键和虚拟按键 屏蔽实体按键的方法 第一步:同样使用RE文件管理器修改系统状态为读写 第二步:进入system/usr/keylayout目录下 第三步:选择synaptics_ ...
- USB转蓝牙hid键鼠按键精灵控制手机虚拟键盘、虚拟触摸等功能
#USB转蓝牙hid键鼠按键精灵控制手机虚拟键盘.虚拟触摸等功能 提示:目的是为了实现通过电脑控制,达到手机虚拟触摸的功能 简单介绍 提示:开放协议,可再行开发,提供C# python c++ 等开发 ...
- android的退格字符,按键安卓版如何实现退格键功能
我们在使用键盘的时候有两种操作,一种是"按下"键,一种是"弹起"键, 将这两个动作连续进行,就是一个完整的"按键"动作 按键功能 按键名称( ...
- 蓝牙耳机按键事件linux,【记录】Android监听蓝牙耳机的按键事件
Android监听蓝牙耳机的按键事件 一.本文测试环境: 1.使用Dacom M10蓝牙耳机 2.成功监测到"电话键"(音量键没有监测到) 3.参考资料 4.参考源码 二.一些说明 ...
- adb 模拟按键,调试按键,android测试可以用
我们在用adb 调试app时,如果需要模拟按键怎样做呢 (http://blog.csdn.net/sergeycao),可以使用如下的方法 adb shell input keyevent 4 #这 ...
- Android 监听Home键按键事件
Android 监听Home键按键事件 标签(空格分隔):Android Home键 在Android开发中有很多按键事件需要在App中捕获从而做出一些针对性的操作,例如返回键,音量键等都可以直接在d ...
最新文章
- linux工程师前景_小猿圈预测2019年Linux云计算发展前景
- provide和inject,Vue父组件直接给孙子组件传值
- CentOS 7下搭建配置 SVN 服务器
- mysql使用DISTINCT进行去重
- void 型指针的高阶用法,你掌握了吗?
- TIOBE开发语言排行榜
- 5月17日 AJAX之JSON
- 深度剖析5款主流杀毒软件
- Matlab使用for循环实现5阶乘和的计算
- 7天快速掌握MySQL-DAY5
- Python+Django+MySQL资产管理系统
- 提示GuestAdditions versions on your host (6.1.32) and guest (6.1.22) do not match错误的解决方法
- 主机安全 服务器windows
- python elif是什么意思_python elif是什么意思
- [BJOI2019] 排兵布阵(分组背包)
- PIC16 F887 单片机 直流电机PWM调速 PID调速 PID算法
- redis 高可用(持久化、主从复制、哨兵、集群)以及集群的三种模式
- springboot skywalking douyin
- Androidq下编译efr32mg21
- 西安电子科技大学经济与管理学院861上岸学姐考研经验分享
热门文章
- portknocking(端口试探) demo
- 如何在ChemDraw中输入℃温度符号
- Flink任务失败,检查点失效:Exceeded checkpoint tolerable failure threshold.
- MySQL 中 delete where in 语句的子查询限制
- HyperV Windows系统端口转发给主机 2021-12-13
- 2019.08.12【NOIP提高组】模拟 A 组
- [20190727NOIP模拟测试9]单(single) 题解(树上dp)
- RISC-V架构能否引领物联网时代?
- 安卓开发常用软件及环境配置
- this java 错误_java异常错误处理