查看: 9075|回复: 2

给安卓添加红外遥控器

[复制链接]

20

主题

50

帖子

1659

积分

超级版主

Rank: 8Rank: 8

积分
1659
发表于 2016-5-2 13:46:41 | 显示全部楼层 |阅读模式
本帖最后由 13859024 于 2017-8-18 10:56 编辑

我们都知道OrangePI有红外接收,但是没有一个指导的文档来教我们怎么去使用它,这个帖子将教你怎么去使用它。
首先你需要一个已经root了的安卓系统,我用的是这个:http://www.orangepi.cn/orangepibbscn/forum.php?mod=viewthread&tid=57&extra=page%3D1
然后需要一个终端模拟器例如安卓终端、ssh客户端等,以及最好有一个支持挂载系统文件夹为读写的文件管理器例如MT管理器、RE管理器等,或者你使用如下的命令挂载文件系统。
  1. mount -o remount,rw /system
复制代码
现在打开终端模拟器并输入以下代码:
  1. su
复制代码
这个将使终端模拟器得到root。首先我们来修改遥控器的配置文件。打开你的文件管理器并进入/system/usr/keylayout挂载成读写,更改此目录下的sunxi-ir.kl成sunxi-ir.kl.bak以做备用及参照。你也可以在终端里执行如下命令实现上面的步骤:
  1. mount -o remount,rw /system
  2. mv /system/usr/keylayout/sunxi-ir.kl /system/usr/keylayout/sunxi-ir.kl.bak
复制代码
然后在文件管理器里创建一个新的配置文件并命名为sunxi-ir.kl或执行如下命令:
  1. mount -o remount,rw /system
  2. echo new > /system/usr/keylayout/sunxi-ir.kl
复制代码
接下来要重新加载红外驱动以便更改配置。终端下执行如下命令:: 建议重启,似乎这样能正常点。启后记得做前两步。
  1. rmmod sunxi_ir_rx
  2. insmod /vendor/modules/sunxi-ir-rx.ko
复制代码
然后需要为遥控器添加配置文件,现在配置文件是空的。先执行如下命令获取键代码:
  1. getevent
复制代码
出现如下信息:
  1. root@dolphin-fvd-p1:/ # getevent
  2. add device 1: /dev/input/event6
  3.   name:     "sunxi-ir"
  4. add device 2: /dev/input/event7
  5.   name:     "Virtual.Acc"
  6. could not get driver version for /dev/input/js0, Invalid argument
  7. add device 3: /dev/input/event5
  8.   name:     "Logitech USB Optical Mouse"
  9. could not get driver version for /dev/input/mouse1, Not a typewriter
  10. add device 4: /dev/input/event4
  11.   name:     "USB USB Keykoard"
  12. add device 5: /dev/input/event3
  13.   name:     "USB USB Keykoard"
  14. add device 6: /dev/input/event2
  15.   name:     "sunxi-ths"
  16. add device 7: /dev/input/event1
  17.   name:     "sunxi-gpiokey"
  18. could not get driver version for /dev/input/mouse0, Not a typewriter
  19. add device 8: /dev/input/event0
  20.   name:     "vmouse"
  21. could not get driver version for /dev/input/mice, Not a typewriter
  22. /dev/input/event3: 0004 0004 00070028
  23. /dev/input/event3: 0001 001c 00000000
  24. /dev/input/event3: 0000 0000 00000000
  25. /dev/input/event6: 0001 0012 00000001
  26. /dev/input/event6: 0000 0000 00000000
  27. ^@/dev/input/event6: 0001 0012 00000000
  28. /dev/input/event6: 0000 0000 00000000
  29. /dev/input/event6: 0001 000b 00000001
复制代码
可以看到开始两行有“add device 1: /dev/input/event6”和名字“sunxi-ir”,这告诉我们红外接收是event6,接下来不要对鼠标键盘进行操作,否则会数次调试信息干扰获取红外的键代码。如果按下遥控器上某个按键就会有调试输出像如下代码那样:
  1. /dev/input/event6: 0001 0012 00000001
  2. /dev/input/event6: 0000 0000 00000000
复制代码

需要的键代码是第一行的第二组数字0012但是这组数字是十六进制的,要把它需要转换成十进制,我使用的是这个在线转换16进制到10进制的工具 0012转换成十进制就是18,然后你要把他们记下来继续调试,调试结束按Ctrl-C来停止getevent。调试完毕后在文件管理器里打开之前创建的 /system/usr/keylayout/sunxi-ir.kl (记得先确认是否挂载成读写再去编辑它)以及添加遥控器配置进去。配置文件格式是:key "键代码" “安卓命令” (可参照之前备份的sunxi-ir.kl.bak)。
  1. key    18  POWER WAKE
  2. key    19  MUTE
  3. key    14  MEDIA_STOP
  4. key    31  MEDIA_PLAY
  5. key    30  MEDIA_PAUSE
  6. key    15  MEDIA_PREVIOUS
  7. key    26  MEDIA_NEXT
  8. key    11  DPAD_UP
  9. key    21  DPAD_DOWN
  10. key    24  DPAD_LEFT
  11. key    12  DPAD_RIGHT
  12. key    22  ENTER
  13. key    13  BACK
  14. key    25  VOLUME_UP
  15. key    29  VOLUME_DOWN
复制代码
上面列出的是我用的键代码。然后保存这个配置文件并重新加载驱动来应用新的配置文件即可。过建议重启。
  1. rmmod sunxi_ir_rx
  2. insmod /vendor/modules/sunxi-ir-rx.ko
复制代码
如果没什么错误你的遥控器已经开始工作了。
下面说说我遇到的一个小问题:
我在添加配置文件并修改好重新配置加载驱动后发现遥控器并未工作,研究一番后发现键代码格式不对,对比/system/usr/keylayout下其他配置文件发现key与键代码与安卓命令之间的空格数目不一样,结果把几个空格对应加上并重新加载驱动遥控器才正常工作。


如果觉得我的帖子对你有所帮助,可以用支付宝扫描下面二维码的方式捐助,谢谢您的支持!
点我扫描二维码进行捐助

0

主题

7

帖子

24

积分

新手上路

Rank: 1

积分
24
发表于 2016-6-22 05:39:45 | 显示全部楼层
感谢教程。
回复

使用道具 举报

3

主题

8

帖子

47

积分

新手上路

Rank: 1

积分
47
发表于 2017-3-3 15:33:00 | 显示全部楼层
是NEC的编码吗 还是其他的 我这获取不了遥控输入事件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表