我正在尝试使用Android KitKat IR API发送Pronto IR Command。 Android抛出错误说"非正片和#34;。我试过下面的示例Pronto Hex命令,我想使用Android IR Manager API发送它。请帮我解决这个问题。
Pronto IR Hex命令: 0000 006D 0000 000D 0006 0115 0006 0115 0006 00BB 0006 00BB 0006 00BB 0006 00BB 0006 00BB 0006 00BB 0006 00BB 0006 00BB 0006 00BB 0006 0115 0006 0900
模式数组: int [] data = [0,109,0,13,6,277,6,277,6,277,6,277,6,187,6,277,6,187,6,187,6,187,6,277,6,187,6,187,6,2304]
irManager.transmit(38000,data);
答案 0 :(得分:4)
我不是100%肯定,但我认为不允许0。
通常,您不需要前四位数字。 Pronto十六进制格式由3部分组成:
Preamble包含4位数:
因此必须删除序列中的前四个数字。
注意: Android API并非100%正确。 https://developer.android.com/reference/android/hardware/ConsumerIrManager.html#transmit(int,int [])
交替开/关模式,以微秒为单位进行传输。
但是在一些Android版本上,根据设备的不同,你必须发送脉冲计数而不是微秒的时间。脉冲计数取决于频率。每秒脉冲数为1000000 /频率。在传输之前,您必须先将每个数字乘以此值。
答案 1 :(得分:0)
我知道这不是你想要的严格意义,但我也遇到了这个问题,结果发现我试图以错误的方式使用错误的代码。
我找到了这个资源:https://irdatabase.globalcache.com/irdatabase.htm它看起来很稳固,至少对于我的三星电视而言。
要使用它,你必须注册yahoo / google / facebook(我觉得很奇怪....但是我发现它的网站,http://www.power7.net/SamsungIR.html说没关系,他们没有垃圾邮件我还是......)并挑选出你需要的设备。然后,你会得到一些看起来像这样的东西:
sendir,1:1,1,38226,1,1,170,171,21,65,21,65,21,65,21,22,21,22,21,22,21,22,21,22,21 ,65,21,65,21,和GT; 65,21,22,21,22,21,22,21,22,21,22,21,22,21,65,21,22,21,22,21 ,22,21,22,21,22,21,22,21,65,21,22,2> 1,65,21,65,21,65,21,65,21,65,21,65,21 ,1783,170,171,21,22,21,4892
删除“sendir,1:1,1”,你会发现38226作为你的频率。然后,还应删除下一个“,1,1”,其余的是您需要传输的内容。就像其他答案所说的那样,我需要将每个数字乘以:* 1000000 / frequency;
例如,我的int []中上面的前几个数字看起来像这样:
int[0] = 4447 //(originally 170)
int[1] = 4473 //(originally 171)
int[2] = 549 //(originally 21)
祝你好运,我希望这会对你有所帮助!