原文地址:http://blog.csdn.net/zhangxy0605/article/details/74344345
现在红外遥控的使用越来越多,android 手机基本都带有红外,自己可以写一个简单的app,就可以遥控家里的电器了。
1、红外部分(主要得到时间量表示的信号,时间间隔调制)
类似的upd6121G 红外编码协议 , 采样率为38.0KHZ, 32位 , 低位在前 , 红外信号编码组成样式为: 引导码+客户码+客户反码+数据码+数据反码+结束位。
以 1F E0 2A D5 为例 , 1F E0是他的客户码及客户反码 , 2A D5则是数据码及数据反码。
根据红外编码协议将这条红外码解析成android红外接口所需的时间量
1F >>> 00011111 >>>f翻转(低位在前)>>>11111000
1F E0 2A D5 >>> 11111000 11100000 01011100 10100011
对于红外编码upd6121G 中1 是560,1680的两个电平的表示 0是560,560的两个电平表示
11111000 11100000 01011100 10100011 >>>560,1680,560,1680,560,1680,560,1680,560,1680,560,560,560,560……560,1680
在加上前后的引导码和结束位就得到了这条数据的时间量表示形式,
byte[] sigin={9000,4500,560,1680,560,1680,560,1680,560,1680,560,1680,560,560,560,560……560,1680,560,20000};
2、Android部分
至于Android实现红外发送代码就简单了!
private ConsumerIrManager mCIR;
mCIR = (ConsumerIrManager) getSystemService(Context.CONSUMER_IR_SERVICE);
if (!mCIR.hasIrEmitter()) {Toast.makeText(this,"未找到红外发生器",Toast.LENGTH_SHORT).show();Log.e(TAG, "未找到红外发身器!");return;
}
if(str_commond.equals("tv_open")){int[] pattern = { 8985,4481,578,555,578,555,578,555,578,555,578,555,578,555,578,555,578,555,578,1688,578,1688,578,1688,578,1688,578,1688,578,1688,578,555,578,1688,578,1688,578,555,578,1688,578,1688,578,555,578,555,578,556,578,555,578,555,578,1688,578,555,578,555,578,1688,578,1688,578,1688,578,1688,578,40734,8985,2242,578,96165 };mCIR.transmit(37950, pattern);}
这里需要在AndroidManifest.xml 中加入ConsumerIrManager的权限,
<uses-permission android:name="android.permission.TRANSMIT_IR"/>
<uses-feature android:name="android.hardware.ConsumerIrManager"/>
这样自己的app就制作完成了。