近期有一个需求在不同的国家操作习惯不一样,需要将back键和app_switch键的功能调换
最初的想法.在PhoneWindowManager中的interceptKeyBeforeDispatching中处理按键分发的过程中实现,但是这里的时机比较晚,而且这里没有对返回键的处理,在这里实现改动量可能比较大
后来想到一处比较早的时机,在底层往上层上报的时候将按键对应keyCode进行对调即可。修改代码位置:
frameworks\native\services\inputflinger\InputDispatcher.cpp
修改点:
void InputDispatcher::notifyKey(const NotifyKeyArgs* args) {
…… ……
}
在
event.initialize(args->deviceId, args->source, args->action,
flags, keyCode, args->scanCode, metaState, 0,
args->downTime, args->eventTime);
之前加如下:
int32_t keyCode = args->keyCode;
ALOGD("notifyKey keyCode=0x%x, ",args->keyCode);
char value[PROPERTY_VALUE_MAX];
property_get("persist.keychange.enable", value, "0");
if (!strcmp(value, "1")){
if (keyCode == 0x4){
keyCode=0xbb;
ALOGD("notifyKey keyCode=0x%x, ",keyCode);
}else if (keyCode == 0xbb){
keyCode=0x4;
ALOGD("notifyKey keyCode=0x%x, ",keyCode);
}
}
通过属性persist.keychange.enable的读取,进行判断是否需要进行对调,如果默认的值为1,则进行对调,即将back的keyCode (0x4)跟app_switch的keyCode (0xbb)进行对调
使用property_get需要引入头文件#include <cutils/properties.h>
然后编译模块inputflinger,即可编完以后将libinputflinger.so
push到手机中system/lib64/下进行替换,
设置属性persist.keychange.enable进行测试即可
分享到:
相关推荐
【标题】"Back_to_Back_HVDC_Conversion_System.rar_Back-To-Back HVDC_back_b" 涉及的核心概念是“背靠背高压直流输电(Back-to-Back HVDC)”系统,这是一种电力传输技术,主要用于连接两个独立运行的交流电网。...
在Android平台上开发QML应用程序时,经常会遇到与原生Android行为集成的问题,比如处理返回键事件。本篇文章将深入探讨如何使用QML的StackView组件来实现Android的back键返回功能,以及在正常状态下通过双击退出应用...
在"filtered-back-projection-master_back_fbp算法_图像重建_"的项目中,提供的代码可能包含实现上述步骤的函数和模块。开发人员和研究人员可以使用这些工具来理解和优化滤波反投影算法,例如,通过调整滤波器参数来...
在 Android 版本的 cocos2dx 游戏中,实现返回键的监听功能是非常必要的。这主要是因为大多数游戏或者软件都需要在退出程序之前进行确认,以避免用户误点击退出程序。实现返回键监听的方式有两种:一是点击返回键弹...
### cocos2d-x 中实现手机返回键和键盘退格键功能 在开发移动游戏或应用程序时,处理用户的输入是一项至关重要的任务。对于基于cocos2d-x的游戏开发来说,能够有效地响应用户通过物理键盘或者虚拟键盘发出的指令是...
标题中的"ecan_back_to_back_28335_28335CAN_28335can_back_CAN_"暗示了这是一个关于28335微控制器(可能为TI公司的TMS320F28335)与CAN(Controller Area Network)接口之间进行回路连接的讨论。描述中进一步确认了...
在Android系统中,Home键、菜单键(在某些设备上是多任务键)和返回键是用户界面的重要组成部分,它们提供了导航和操作的基本方式。然而,在特定的应用场景下,如开发特殊应用或游戏时,开发者可能需要屏蔽这些系统...
为了提高代码的可维护性和复用性,可以考虑创建一个基类Activity,里面封装好对返回键事件的处理逻辑,并让需要监听返回键的Activity继承这个基类。 最后,值得注意的是,在Android 4.0(API level 14)及以上版本...
### 实现“两次按返回键退出程序”的效果 在安卓应用开发中,有时为了提高用户体验,我们会设置一种机制,即用户需要连续点击两次返回键才能退出应用。这种设计可以防止用户误操作导致应用意外关闭。下面我们就来...
标题中的“Part_1_Simulate_Back_EMF_Voltage_of_a_BLDC_Motor.7z”指示这是一个关于无刷直流电机(BLDC Motor)反电动势(Back Electromotive Force, 简称Back EMF)模拟的项目文件。这个项目使用了Simulink软件,...
在Android系统中,点击两次返回键退出程序是一种常见的应用安全机制,目的是防止用户意外地退出正在使用的应用。这种设计能够确保用户在误触返回键时,不会立即退出应用,而是需要再次确认。以下是对这个主题的详细...
在Android应用开发中,通常我们希望用户在按下返回键时能够退出应用程序,但为了提供更好的用户体验,Android系统并不推荐直接在用户第一次点击返回键时就退出。为了实现“再按一次返回键退出应用程序”的功能,我们...
【QingFengInn_back_back_后台管理_】是一个专为用户后台管理设计的系统,它涵盖了多项关键功能,旨在提供一个全面且高效的管理平台。这个系统的主要目标是展示和管理用户的各种详细信息,同时提供了多种实用工具,...
本文将深入探讨如何在Cocos2d-js中实现对Android返回键的监听和响应。 首先,理解Cocos2d-js的事件系统是关键。Cocos2d-js提供了一个基于事件驱动的模型,允许开发者注册监听器来处理各种事件,如触摸事件、键盘...
Android设备通常配备多个物理按键,包括返回键,这对于应用的导航至关重要。然而,在某些场景下,开发者可能希望禁用或自定义这些行为,例如在游戏或全屏模式下。 首先,让我们理解Android系统如何处理物理按键事件...
这个"back_up_wrapping_10_25.zip_back_面 OPENGL"文件可能包含了一个关于如何利用OpenGL进行3D图形编程的项目或者教程,特别是关于背面剔除(back-face culling)和纹理坐标包裹(wrapping)的技术。 首先,让我们...
在本文中,我们将深入探讨如何在Android中实现返回键功能,并结合提供的代码片段进行解析。 首先,让我们来看一下`onKeyDown()`方法。在`MainActivity.java`中,我们重写了`Activity`的`onKeyDown()`方法来处理返回...
这个DEMO实现的功能是当用户连续两次按下返回键时,程序会识别到这一行为并执行退出操作。在Android系统中,单击返回键通常用于返回上一级界面或关闭当前活动,而连续双击则可以作为退出应用的确认机制,避免误操作...
本篇文章将详细讲解如何实现PopupWindow监听返回键,并动态控制其关闭时机。 首先,了解PopupWindow的基本用法。PopupWindow类提供了创建和展示弹出窗口的方法。你需要实例化PopupWindow对象,设置内容视图、宽度、...
标题“menu_back_end_arduino_back_”暗示了这是一个与Arduino编程相关的项目,特别是涉及到菜单后端的实现。在Arduino开发中,"back end"通常指的是处理数据、逻辑控制或与硬件交互的部分,而不直接涉及用户界面。...