zoukankan      html  css  js  c++  java
  • android 7.1 rk3399 适配 IR 遥控器

    先看效果:

    DIY 外壳:

    开发板买来,一直是用来学习安卓的,以前有一块 4412 android 4.4 ,实测性能的确太差,看电影都卡。先是花200买了个 rk3288 效果也不错,但是 IR 电路少元件,又花了300买了一个二手的 rk3399 ,只有裸板,这次正好 用 一个装手机贴膜的盒子 DIY 一个,直接拿裸板的确是太扎手了,手上还有静电也对板不好。

    以前,一直是插鼠标,当 TV 盒子用的,也不是太方便,直到前年的时候,有个同事离职的时候,丢了几个板子和一些小配件给我,里面就有一个 红外遥控器,的确是安卓用的,按键也挺全。

     

    最近也在搞安卓相关的开发,正好把这个也搞搞。

    其实,这个难度不大,仅需要修改 设备树 就可以了。

    虽然板子不是 这家的,但是也能做为参考

    https://wiki.t-firefly.com/zh_CN/Firefly-RK3399/driver_ir.html

    打开遥控器键码打印
    echo 1 > /sys/module/rockchip_pwm_remotectl/parameters/code_print

    全部的键,分别按一次

    dmesg 查看内核打印

    [  414.035531] init: Untracked pid 2503 exited with status 0
    [  541.694656] USERCODE=0xff00
    [  541.721567] RMC_GETDATA=eb 电源
    [  561.002406] USERCODE=0xff00
    [  561.029277] RMC_GETDATA=fd 上
    [  562.223270] USERCODE=0xff00
    [  562.250182] RMC_GETDATA=fc 下
    [  562.972342] USERCODE=0xff00
    [  562.999333] RMC_GETDATA=fb 左
    [  563.659345] USERCODE=0xff00
    [  563.686279] RMC_GETDATA=fa 右
    [  579.286773] USERCODE=0xff00
    [  579.313627] RMC_GETDATA=fe 确定
    [  587.453435] USERCODE=0xff00
    [  587.480369] RMC_GETDATA=ff 主页
    [  593.331801] USERCODE=0xff00
    [  593.358781] RMC_GETDATA=e9 返回
    [  599.380030] USERCODE=0xff00
    [  599.406982] RMC_GETDATA=e8 菜单
    [  605.250435] USERCODE=0xff00
    [  605.277300] RMC_GETDATA=ef 音量+
    [  615.850009] USERCODE=0xff00
    [  615.876964] RMC_GETDATA=f6 音量-

    将按键值和用户码,写到设备树里面,重新生成 resource.img 烧到板子上就行了,这个不同的平台不一样,有的android 是要刷 dtb.img 有的是 boot.img 不一样,要看平台,如果想省事,就刷一个整体大包。

    编译安卓7.1.2 遇到2个错误:

    [ 59% 30431/51334] Building with Jack: out/ta...ramework_intermediates/with-local/classes.de
    FAILED: /bin/bash out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/with-local/classes.dex.rsp
    Out of memory error (version 1.2-rc4 'Carnac' (298900 f95d7bdecfceb327f9d201a1348397ed8a843843 by android-jack-team@google.com)).
    GC overhead limit exceeded.
    Try increasing heap size with java option '-Xmx<size>'.
    Warning: This may have produced partial or corrupted output.
    [ 59% 30431/51334] target  C++: libart <= art...untime/interpreter/interpreter_switch_impl.c
    ninja: build stopped: subcommand failed.
    build/core/ninja.mk:148: recipe for target 'ninja_wrapper' failed
    make: *** [ninja_wrapper] Error 1

    内存给的太少了,直接给 虚拟机 15G 内存,宿主机仅有 16G 内存,主机卡的不行。

    SSL error when connecting to the Jack server Try jack-diagnose 
     
    检查权限也是正常的 $ ls -la ./prebuilts/sdk/tools/jack-diagnose -rw-rw-r-- 1 dev dev 4159 9月 11 09:28 ./prebuilts/sdk/tools/jack-diagnose
     
    在编译停止的时候,检查一下 jack 进程还是在的
    ps aux|grep jack
            4885  162 24.4 11048556 3666956 ?    Sl   12:43  84:25 java -XX:MaxJa    vaStackTraceDepth=-1 -Djava.io.tmpdir=/tmp -Dfile.encoding=UTF-8 -XX:+TieredComp    ilation -cp  /.jack-server/launcher.jar com.android.jack.launcher.Server    Launcher
           114597  0.0  0.0  21312   964 pts/20   S+   13:35   0:00 grep --color=a    uto jack

    解决 手动停止下 jack 然后在正常编译安卓就正常了:

    prebuilts/sdk/tools$ ./jack-admin kill-server
    Killing background server

    安卓 system 挂载为 可读写的方法:(低版本 adb  没有 disable-verity 命令,请使用最新版本 adb)

    adb disable-verity 
    adb root
    adb remount

    安卓中使用 红外 遥控器的事件处理比 linux 多了 kl 如 :/system/usr/keylayout/ff420030_pwm.kl

    一个键值,可以设置映射到另一个键值上。

    红外信号,通过38M 一体化接收头接收到,然后使用 PWM进行捕获,在通过比较设备树中配置的用户码和键码,上报 input event  到内核 , 在交给安卓 输入子系统进行处理。

  • 相关阅读:
    Windows远程连接linuxmysql服务
    windows虚拟环境
    网站部署中遇到的系列问题
    网站部署中遇到的问题-未能加载文件或程序集“System.Data.SQLite”或它的某一个依赖项
    调用WCF错误-There was no endpoint listening
    网站部署中遇到的问题-过一段时间后连不上服务器
    网站部署中遇到的问题-网页中js,css和图片资源无法加载
    网站设置404错误页的经历
    IIS发布常见错误-HTTP 错误 404.0
    在List中常用的linq表达式
  • 原文地址:https://www.cnblogs.com/ningci/p/15256839.html
Copyright © 2011-2022 走看看