android遥控器适配

    前言android遥控器的适配主要是在用在开发网络机顶盒上,虽然现在出现了用手机去控制电视,但大部分仍然是使用便宜稳定的红外线遥控器。

    步骤1遥控器以一定频率的形式发出红外线(超出人类可视范围,很多物体都会产生红外线,所以以一定的规则进行发送),接部分也是由一个检波二极管接收的(可以网上搜一下其样子)。其实整个流程也就是编码--》发送--》接收--》解码--》的过程,普通遥控器的话,没涉及加密,如果是防盗的,会进行加密处理。

    步骤2检波二极管接收按键后是交给驱动去处理的,驱动会根据得到的红外线键值去对比linux的标准扫描码名(这里会有一个文件描述了红外线键值与linux标准扫描码名的对应关系,海思的是有一个key.xml文件,瑞芯微的是直接在rkxx_remotectl.c文件里描述)
    步骤3得到Linux标准扫描码名后会通过另一个描述文件(头文件,海思的是Linux_key.h,一般都是input.h)得到linux标准扫描码的值,然后写入到设备节点中
    步骤4android的框架层会有一个服务不停的去读取相应的设备节点(读取后设备节点会清空),如果读到了数据则又通过一个描述文件(一般是.kl文件,海思的是Vendor_0001_Product_0001.kl,瑞芯微的是rkxx-remotectl.kl)得到android层的键值名

    步骤5android层的键值名又会映射成android的键值keycode(KeycodeLabels.h),然后为了提高可读性,把keycode都定义成了静态最终变量(KeyEvent.java)

    总结上面描述的只是整个流程,具体的可以找到相应的文件,然后对应着来看。


  何为扫描码:计算机键盘通常采用行列扫描法来确定按下键所在的行列位置。所谓行列扫描法是指,把键盘按键排列成n行×m列的n*m行列点阵,把行、列线分别连接到两个 并行接口双向传送的连接线上,点阵上的键一旦被按动,该键所在的行列点阵信号就被认为已接通。按键所排列成的矩阵,需要用硬件或软件的方法轮转顺序地对其行、列分别进行扫描,以查询和确认是否有键按动。如有键按动,键盘就会向主机发送被按键所在的行列点阵的位置编码,称为扫描码

你可能感兴趣的:(android系统开发)