【 Android 8.0 (Oreo) 添加按键及键值】

Android 8.0 (Oreo) 添加按键及键值

当手机外设增加物理按键(类似VOLUME_UP/ VOLUME_DOWN的按键),需要们去定义添加键值,提供给APP使用。

前提:

framework层添加前,要确定按键驱动是否调好:

adb shell getevent

/dev/input/event3: 0001 02fe 00000001

/dev/input/event3: 0000 0000 00000000

/dev/input/event3: 0001 02fe 00000000

/dev/input/event3: 0000 0000 00000000

其中02fe就是驱动上报的值,两次的1,0是指按下和弹起的动作。

  1. gpio-keys.kl

gpio-keys.kl 这个文件对应的是定制机的kl 文件,不一定是这个名字,定义在 AndroidBoard.mk 中的:

LOCAL_MODULE := gpio-keys.kl

,在手机中可以在

/system/usr/keylayout

找到这个文件

将驱动上报的02fe转为十进制的766, 并且定义:

key 766     F14

这样就完成了对物理按键kl文件的映射到“F14”

2.framework native 中定义:

/frameworks/native/include/android/keycodes.h
AKEYCODE_F14 = 901
/frameworks/native/include/input/InputEventLabels.h
DEFINE_KEYCODE(F14)

3. framework base下的定义:

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

定义按键的keyCode 也就是 APP 在onKeyDown() 获取的keyCode

public static final int KEYCODE_F14 = 901; // 注意APP

获取的keyCode是901 不是766

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

<enum name="KEYCODE_F14" value="901"/>

按照以往的经验来看,配置到这里编译运行,添加的按键应该可以生效了。但是在8.0上并非如此

4.android O 需要添加:

> frameworks/base/data/keyboards/Generic.kl
> 
> frameworks/base/data/keyboards/qwerty.kl
> 
> key 766 F14

完成这一步才会生效。

键值最大767

总结:android 8.0 在代码的编译上有很多变化,在6.0/7.0 的可以生效的设置往往会失效,这时候需要我们多研究了,因为很多版本上的差异官网也没有说清楚。

转载:https://www.jianshu.com/p/dcd0e030fbf5

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值