在做Android电视端系统开发的过程中,有一个指标一直是让人想要解密的黑盒子,那就是遥控器按键按下后,到底过了多久才会得到界面上的响应
经过一周多时间的摸索和开发调试,终于实现了以下几个需求。长时间未深入驱动层探险了,显的生疏了。
# 需求分析
- 收集电视机接收到遥控器信号时的时间戳信息,要求可从应用层KeyEvent中获取
- 收集电视机系统转发遥控器键值时的时间戳信息,要求同上
- 收集遥控器键值是来自红外遥控器还是蓝牙遥控器的信息,要求同上
如果仅仅是简单的收集,那么只有认清Linux Input子系统的设备驱动部分逻辑,定位出具体的驱动代码,便可基本上满足了需求。这个需求真正的难点在于将相关信息体现到KeyEvent中。我们知道KeyEvent是Android应用层可调用的一个按键事件类,平时处理keydown,keyup时免不了使用它。而Android的事件系统与Linux内核的Input子系统是强相关的,可以理解成从下往上只是做了多层封装和转换。所以我很难避免地需要从下往上跟踪一个按键事件的被触发到应用层消费的全过程了。
# 交付方式
针对上面的需求,从应用层的角度看,交付方式可以描述为3个自定义接口:
|
|