Android 添加蓝牙遥控按键

一. 蓝牙遥控器的原理

本文源码给予 amlogic 9.0
蓝牙遥控器的原理如下图
在这里插入图片描述

从流程上我们可以发现,我们遥控器的码值被转化了几次: HID码值–→Linux event–→ 根据Vendor、Product转化为Android事件。

二. 按键知识

适配可以发现,一些按键不可用,说明按键值为添加和适配。

通过 getevent 可以拿到其中一个按键的值:
**加粗样式
**

从上图可以知道

  • 名字:蓝牙遥控器的名字为 BT_Smart_RC001
  • 007004a :其中,高位为 usage page (07代表普通健,0c 代码多媒体健);低位为健值
  • 0066:表示down的值,这个后面需要在 kl 文件中,转换成十进制的值

三. 修改已有按键值

现象:BT_Smart_RC001 这个遥控器,按下Back 建,HOME 建不起作用。

先使用 getevent 按下Back健,拿到event 的值
在这里插入图片描述

这种通用的按键,在KeyEvent 是有的,我们要做的,就是修改 kl 的值即可。

使用 dumpsys input 拿到 kl 的位置:
在这里插入图片描述

可以看到 kl 在 Android 系统映射的位置,修改里面的值,0x9e 转成十进制为 158,同理拿到HOME的值,修改如下

在这里插入图片描述

修改后重启就发现已经起作用了。

3.1 添加kl

如果你使用 dumpsys input 拿到的 kl 是 General.kl ,说明你的遥控器并没有被添加进去,kl 的添加需要知道 vendorID 和 productID。
首先,先进入在/system/usr/keylayout,通过cat /proc/bus/input/devices 拿到input信息。
且从上面知道,我们的蓝牙是 input4 ,所以,可以拿到信息:
在这里插入图片描述
所以,需要添加的文件未 Vendor_000d_Product_3838.kl,放到 frameworks/base/data/keyboards 即可。

四. 添加新的按键值

BT_Smart_RC001 有个按键0X59,我们想把它定义为新的健,所以需要走一遍按键添加流程;

5.1 添加键值和上层映射

去到 linux 映射表,hid-input.c ,位置在 common/drivers/hid/hid-input.c ,去到 HID_UP_CONSUMER 这个方法,把0x59 添加进去,并新增 KEY_SOURCE 这个字符串,后续给Android使用的
在这里插入图片描述

5.2 头文件中添加字符串

去到 common/include/uapi/linux/input-event-codes.h ,添加刚才的KEY_SOURCE,注意不要重复即可

在这里插入图片描述

5.3 framework 的 KeyCodes.h , InputEventLabels.h 和KeyEvent.java

去到 frameworks/native/include/android ,在 KeyCodes.h 增加刚才的SOURCE,注意不要重复即可
在这里插入图片描述

然后再去到 frameworks/native/include/input,修改 InputEventLabels.h,定义刚才的source

在这里插入图片描述

最后,再去到 frameworks/base/core/java/android/view , 修改给Android 上层使用的 KeyEvent.java 即可:
在这里插入图片描述

这里,我们的按键值,就从 linux 传到 KeyEvent.java 了。

五. PhoneWindowManager 添加按键功能

接下来就是处理自己的功能了,此时按键已经通过 onKeyEvent()拿到,如果你想全局处理,可以在 PhoneWindowManager 的

interceptKeyBeforeQueueing 方法添加功能,如:
在这里插入图片描述

这样,新建一个按键就完成了

  • 13
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Android Studio蓝牙遥控app是一种使用Android Studio开发的应用程序,用于通过蓝牙技术控制其他蓝牙设备。 这个应用程序可以连接到支持蓝牙的设备,如智能手机或电脑。通过蓝牙连接,用户可以发送指令来控制其他蓝牙设备,如机器人、小车或无人机等。 开发这种应用程序的关键是使用Android Studio中的蓝牙API来实现蓝牙连接和数据传输。首先,应用程序需要搜索和发现附近的蓝牙设备,选择要连接的设备,并与其建立蓝牙连接。然后,通过发送和接收数据包,应用程序可以向设备发送控制指令,并获取设备的反馈信息。 在开发过程中,我们可以利用Android Studio提供的工具和库,如蓝牙管理器、蓝牙适配器和蓝牙套接字来实现蓝牙连接和数据传输。同时,我们还可以为用户提供友好的用户界面,如按钮和滑块,用于发送各种控制指令。 在编写代码时,我们需要处理一些键盘或触摸事件来响应用户的操作,并将指令转换为特定的蓝牙数据格式发送给蓝牙设备。同时,我们还需要处理从设备接收到的数据并解析它们以获取有用的信息。 总而言之,Android Studio蓝牙遥控app是一种基于Android Studio开发的应用程序,可通过蓝牙技术连接到其他蓝牙设备,并通过发送和接收数据包来控制这些设备。它提供了一个友好的用户界面和一些关键的API和库来实现蓝牙连接和数据传输。 ### 回答2: Android Studio是一款专门用于开发Android应用程序的集成开发环境。通过Android Studio,可以方便地开发各种功能强大的Android应用,包括蓝牙遥控应用。 蓝牙遥控app是一种可以通过蓝牙技术来控制其他设备的应用程序。通过该应用,用户可以使用自己的Android设备来控制其他设备的功能,例如控制电视、音响、灯光等。 在Android Studio中开发蓝牙遥控app,首先需要进行蓝牙模块的相关设置和初始化。通过使用Android提供的蓝牙API,可以实现蓝牙设备的扫描、连接和数据传输等功能。 在app界面中,可以设计一个简洁直观的用户界面,包括蓝牙设备列表、连接按钮和控制按钮等元素。用户可以通过点击连接按钮来扫描附近的蓝牙设备,并选择要连接的设备。一旦连接成功,用户可以通过点击控制按钮来发送相应的指令给设备,实现对设备功能的控制。 同时,为了增加用户体验,还可以在app中添加一些额外的功能,例如设备状态显示、指令发送记录等。这些功能能够帮助用户更方便地使用蓝牙遥控app,并提供反馈和记录等功能。 总之,通过使用Android Studio,我们可以开发出功能强大且易于使用的蓝牙遥控app。这种应用可以使我们的Android设备成为一个方便实用的蓝牙遥控器,为我们的生活带来更多的便利性和娱乐体验。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值