android 增加新按键

本文介绍如何在Linux内核及Android系统中添加并处理新的按键值。主要步骤包括修改内核的input子系统、在Android框架中添加新按键值的支持等。


1,为了更规范,添加kernel部分的include/linux/input.h

该头文件定义了想input子系统中上报的键值宏,虽然你可以直接上报int整数。


2,驱动中增加你新键值的响应部分

你的输入设备的驱动中在新键值的相应中上报加上的上报值。



3,依次在

frameworks/base/native/include/android/keycodes.h

frameworks/base/libs/ui/Input.cpp b/frameworks/base/libs/ui/Input.cpp //这里在isSystem中增加了相应的键值,还不清楚相关影响

frameworks/base/libs/ui/EventHub.cpp

frameworks/base/include/ui/KeycodeLabels.h

frameworks/base/core/res/res/values/attrs.xml

frameworks/base/core/java/android/view/KeyEvent.java

frameworks/base/api/current.xml

external/webkit/WebKit/android/plugins/ANPKeyCodes.h


这里能力太浅没能跟太好,只是grep到这些文件有正常键值的设置,就相应的添加到里面了,哪位大侠能通透下就万分感激了

4,为相应的kl文件添加键值对

这些东西都可以参考标准的键值,然后照抄出你自己的新建就可一了。


然后在apk中的onKey*中就可以捕获到你新加的按键了


注:版本是2.3 相信其他版本原理是一样的,搜索一个标准的键值,然后参考着去添加你自己的新键值

可以使用 `dispatchKeyEvent()` 方法来模拟音量增加按键。具体实现代码如下: ```java public class MainActivity extends AppCompatActivity { private AudioManager audioManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); } public void simulateVolumeUp() { KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_VOLUME_UP); dispatchKeyEvent(event); event = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_VOLUME_UP); dispatchKeyEvent(event); } @Override public boolean dispatchKeyEvent(KeyEvent event) { if (event.getKeyCode() == KeyEvent.KEYCODE_VOLUME_UP) { // 模拟音量增加按键 audioManager.adjustVolume(AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI); return true; // 已经处理该事件,不需要再传递给下一个处理者 } return super.dispatchKeyEvent(event); // 将事件传递给下一个处理者处理 } } ``` 在这个例子中,我们定义了一个方法 `simulateVolumeUp()`,用于模拟音量增加按键的操作。方法中首先构造一个 `KeyEvent` 对象,并将其传递给 `dispatchKeyEvent()` 方法来模拟按下和释放音量增加按键的事件。在 `dispatchKeyEvent()` 方法中,我们捕获了音量增加按键的事件,并调用 `AudioManager.adjustVolume()` 方法来增加系统音量。最后,如果事件被成功处理,就返回 `true` 表示不需要再传递给下一个处理者处理。否则,将事件传递给下一个处理者处理。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值