zoukankan      html  css  js  c++  java
  • 和菜鸟一起学android4.0.3源码之红外遥控器适配

            其实,这个是来到公司,做linux驱动的第一个任务,照理来说应该是要放在linux那块的,只是,linux下的红外遥控器很多,而网上关于android下的红外遥控一直都没有什么资料可以学习,仅记下来,为了温故知新。
             在此,已经调试好linux下的IR的驱动,一开始是以char设备来注册的,不过想着android下,基本都是input设备的,因为EventHub下打开的是/dev/input/目录下的设备节点。所以如果把遥控器作为input设备,不是更好,其实input设备也是属于char设备的,只是她实现好了很多机制,只需要上报数据就可以搞定了,简单又方便啊。在此有一个假设,是想把IR的各个按键码映射到android中的键盘中得话,是不是可以直接搞定?带着这个问题,于是试验了了下已经编写好的IR的红外驱动。随便添加了电源,音量,数字,以及home,返回,menu等。
            没想到,驱动层适配好后,android上层都可以实现了。于是也就没有深入下去,功能也实现了,下面简单介绍下实现过程吧。
            首先是注册为input设备,这个网上多的是,然后是遥控器的解码,这个看具体的解码过程,已经很好实现的。中断来了之后,由于在解码过程中有点耗时,所以就放在中断下半部分去工作,也就是工作队列中去了。接着按照实现的编码来上报按键值。比如说按下的是电源键,那么就

    input_report_key(ir_dev, KEY_POWER, 1);
    input_report_key(ir_dev, KEY_POWER, 0);
    input_sync(ir_dev);
    


         那样的话android上层就会知道这个是电源键,如果是音量加键,那么就上报

    input_report_key(ir_dev, KEY_VOLUMEUP, 1);
    input_report_key(ir_dev, KEY_VOLUMEUP, 0);
    input_sync(ir_dev);
    


        播放音乐的时候也是可以控制音量了。
          具体的KEY_POWER啊,KEY_VOLUMEUP等都可以在linux下的linux/linux.h中找到,基本上所有的操作都有定义。所有的功能都是可以映射到android键盘中的,至此,可以拿着遥控器来控制我们的android的各个功能了。

  • 相关阅读:
    蒟蒻Orion还要学的东西!
    一些技巧 && 常数优化 && 出现の错误 [绝赞更新中!]
    [US Open 2004][luogu2342] 叠积木 [带权并查集]
    省选算法学习·一些数列相关的数学知识 [数学]
    [BJOI2019] 奥术神杖 [取log+AC自动机+dp]
    [BJOI2019] 删数 [dp转贪心结论+线段树]
    [2018国家集训队][UOJ449] 喂鸽子 [dp+组合数学]
    [2018集训队作业][UOJ424] count [笛卡尔树+括号序列+折线法+组合数学]
    [2018集训队作业][UOJ450] 复读机 [DP+泰勒展开+单位根反演]
    [SDOI2014][BZOJ3533] 向量集 [线段树+凸包]
  • 原文地址:https://www.cnblogs.com/wuyida/p/6300095.html
Copyright © 2011-2022 走看看