1、生成
存在这样一个线程,它不断地从driver读取Event,并把它放到RawEvent队列中。这个队列中的RawEvent既有按键,也有触摸、轨迹球等事件。
RawEvent队列中的每个RawEvent最后都会通过一系列转化,最终变为KeyEvent被发送给另外一个线程,即输入线程,也就是一个Activity的主线程。
2、传递
KeyEvent传递过程主要可以划分为三步:过滤器、View树、Activity
过滤器部分主要对应着PhoneWindowManager.java中的interceptKeyTq和interceptKeyTi这两个方法。它们的代码可以在frameworks/base/policy/base/phone/com/android/internal/policy/impl/PhoneWindowManager.java中看到。
这两个过滤器最大的不同就是interceptKeyTq用于RawEvent,而interceptKeyTi用于KeyEvent。
在一个没有实体键盘的机器上,Power键会被interceptKeyTq这个过滤器吃掉用来调用关机对话框或者使机器休眠。而Home键会被interceptKeyTi这个过滤器吃掉,用来把当前Activity切换到后台并把桌面程序切换到前台。所以,应用程序在View和Activity的onKeyDown/Up中是监听不到这两个按键的。除了这两个键以外的按键,都有机会继续前进。接下来,KeyEvent会先经过interceptKeyTi过滤器,如果这个过滤器不吃掉的话,就会继续前进,进入View树,如果没有被哪个View吃掉的话,最后进入到Activity的onKeyDown/Up方法中。
当一个KeyEvent经过上面的过程还没有被吃掉的话,系统就会利用它做一些定制的功能。比如音量键被系统用来调整声音,多媒体按键用来控制媒体播放,搜索键用来快速打开搜索功能,返回键用来退出当前Activity等。
分享到:
相关推荐
主要介绍了Android 跨进程模拟按键(KeyEvent )实例详解的相关资料,类似手机遥控器的需求就可以这么做,需要的朋友可以参考下
该文档包含了Android中常用的210个按键及对应的值数据。
android keyevent事件分析
9.0 10.0 在framework层添加KeyEvent按键事件的流程
介绍了androind开发中对于键盘监听类KeyEvent的成员变量定义以及API描述,并给出示例代码。
Robot键盘常量java.awt.event.KeyEvent。KeyEvent全部键盘按键映射整理KeyEvent枚举类
安卓 adb shell input keyevent 按键大全.txt
Android官方API文档完整中文版是一款官方推出的全中文完整API,Android API是一套可供调用的系统接口,在需要使用的时候必备一套Android官方中文API文档。 Android API中文文档基本简介 API(Application ...
模拟键模拟 Android KeyEvent
Android平台手机键值列表,可通过简单的adb命令输入相应的键值,即可模拟按手机对应的键盘,该列表列出了Android平台手机键值
该组件用于React-Native中获取Android原生层面的键盘响应事件,目前开发者本人的主要使用场景是Android-TV端获取遥控器的按键事件。
可以利用adb命令,也可以使用Android SDK中的monkeyrunner工具。 win7-64 gitbash 使用adb命令 主要使用input命令 usage: input ... input text input keyevent input tap <x> input swipe <x1> <y1> <x2>...
遥控器按键捕获js封装,适用于做联通iptv和广电DVB平台遥控器按键识别,引入该JS识别遥控器按键
Android 电视TV 遥控器键值对应表 互联网盒子 电视机顶盒
Android.View.KeyEvent类中定义了一系列的常量和方法,用来描述Android中的 按键事件和返回键有关的常量和方法有。 KeyEvent.KEYCODE_BACK: 表示key类型为返回键 KeyEvent.ACTION_DOWN:表示事件为按下key,...
RK3128平台android系统添加修改遥控器键值参考文档,input.h中定义的键值在KeyEvent.java中不一定有定义哦,如果需要添加新的键值,可参考KeyEvent.java中添加新键值的那段注释。
android设计官方文档!~Android官方API文档完整版、中文版帮助文档 android.widget 类 CheckBox java.lang.Object ...Drawable.Callback, KeyEvent.Callback, ViewTreeObserver.OnPreDrawListener, Checkable
React本机KeyEvent 捕获外部键盘按键或远程控制按钮事件 。 安装 通过npm 运行npm install react-native-keyevent --save 通过纱线 运行yarn add react-native-keyevent 连结中 Android: react-native link ...
An Android application for displaying the KeyCodes of pressed keys. This application is mostly for debugging purposes. Non default behavior found up to now: The Enter key on the Motorola Milestone ...
android;多媒体开发;android应用开发揭秘。 import java.io.File; import java.io....import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; import android.view.SubMenu