android 虚拟按键是通过哪种机制上报的?

1.在normal mode下,tp button也是和其他触摸事件一样,以坐标形式的input_event进行上报。在初始化时会通过tpd_button_setting()函数依据定义在tpd_custom_XXX.h文件里的配置信息将虚拟按键的坐标信息写在/sys/board_properties/virtualkeys.mtk-tpd中。

工作时。tp driver将按下的点的坐标进行上报。Android上层会读取sys中的按键配置信息。再推断上报的坐标是否属于某个按键的坐标范围,以此将坐标信息转化为详细的按键键值。

2.在factory mode和recovery mode下,因为Android还未启动。所以按键事件不能採取1中的上报机制。而是利用tpd_button()函数来对按键进行直接上报处理。

所以,对于normal mode。按键事件不须要调用tpd_button()函数上报,而在factory mode和recovery mode下,必须调用tpd_button()函数对虚拟按键事件进行上报。

时间: 2024-10-25 15:41:14

android 虚拟按键是通过哪种机制上报的?的相关文章

Android应用:StatusBar状态栏、NavigationBar虚拟按键栏、ActionBar标题栏、Window屏幕内容区域等的宽高

一.屏幕中各种栏目以及屏幕的尺寸 当我们需要计算屏幕中一些元素的高度时,或许需要先获取到屏幕或者各种栏目的高度,下面这个类包含了Status bar状态栏,Navigation bar虚拟按键栏,Action bar标题栏, Window屏幕内容等的宽高的计算,可以带来极大的方便. 因为我在代码中做了比较详尽的注释,在这里不再多阐述,以下是代码: 1 /** 2 * 这个类描述了当前设备的配置中system bar的尺寸(StatusBar状态栏,NavigationBar虚拟按键栏,Actio

隐藏Android下的虚拟按键

要隐藏Android下的虚拟按键,可通过如下办法操作 [cpp] view plain copy adb root adb remount adb shell ls -al /system/build.prop   (查看文件权限) -rw-r--r-- root     root         4237 2015-11-19 04:34 build.prop adb shell pull /system/build.prop ./  (将该文件拿出来修改) gedit  build.prop

Android 去除状态栏和隐藏虚拟按键

//取消状态栏getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 一定得在setContentView()上面 隐藏虚拟按键: protected void hideBottomUIMenu() { //隐藏虚拟按键,并且全屏 if (Build.VERSION.SDK_INT > 11 && Build.VERSIO

Android隐藏虚拟按键,关闭开机动画、开机声音

/*********************************************************************** * Android隐藏虚拟按键,关闭开机动画.开机声音 * 声明: * 有时候,我们可能会希望隐藏掉android中的虚拟按键,当然,那个 * Android的开机动画,有时候也是挺讨人厌的,也是可以隐藏的. * * 2016-1-7 深圳 南山平山村 曾剑锋 **********************************************

Android 获取虚拟按键的高度

//获取虚拟按键的高度 public static int getNavigationBarHeight(Context context) { int result = 0; if (hasNavBar(context)) { Resources res = context.getResources(); int resourceId = res.getIdentifier("navigation_bar_height", "dimen", "androi

Android知识点:隐藏底部虚拟按键

/** * 隐藏底部虚拟按键,且全屏 */ private void hideBottomMenu() { //隐藏虚拟按键,并且全屏 if (Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) { // lower api View v = this.getWindow().getDecorView(); v.setSystemUiVisibility(View.GONE); } else if (Build.V

从Android源码的角度分析Binder机制

IPC 为了弄懂IPC的来龙去脉,我将从以下三个方面为大家来讲解,希望对大家理解IPC会有帮助 什么是IPC IPC是Inter Process Communication的缩写,其意思就是进程间的通信,也就是两个进程之间的通信过程.我们都知道在Android系统中,每个应用都运行在一个进程上,具有自己的DVM实例,而且进程之间是相互隔离的,也就是说各个进程之间的数据是互相独立,互不影响的,而如果一个进程崩溃了,也不会影响到另一个进程.采取这样的设计是有一定道理的,例如这样的前提下将互相不影响的

Android禁止按键关闭AlertDialog

在Android系统中,默认点击AlertDialog中的按键都会关闭该AlertDialog,但有些情况下我们并不希望使对话框关闭,或者希望使对话框在自己需要的时候再关闭. 例如我现在做的一个项目,通过AlertDialog读取用户输入的一个值,希望只有在判断值为正确范围内才关闭该对话框,否则对话框予以保留,并给以用户相应的提醒. 可以利用反射的机制来实现这一效果: 不关闭对话框: ? 1 2 3 4 5 6 7 8 9 10 // 使对话框无法关闭 try {     Field field

Android Learning:多线程与异步消息处理机制

在最近学习Android项目源码的过程中,遇到了很多多线程以及异步消息处理的机制.由于之前对这块的知识只是浅尝辄止,并没有系统的理解.但是工程中反复出现让我意识到这个知识的重要性.所以我整理出这篇博客,主要介绍了线程和异步处理机制的意义和用法,目的在于帮助初学者能够加深对异步消息处理机制的理解,在实际Android工程中能够更多地使用AsyncTask工具类在子线程中进行UI更新. 一.Android当中的多线程[1] 在Android当中,当一个应用程序的组件启动的时候,并且没有其他的应用程序