ConsumerIrManager.transmit 棒棒糖坏了?
ConsumerIrManager.transmit broken in Lollipop?
我昨天将我的 Samsung Galaxy S4 从最新的 KitKat 升级到 Lollipop (5.0.1),我使用了几个月的红外遥控应用程序停止工作。
由于我使用的是 KitKat ConsumerIrManager 的最新副本,因此 transmit() 函数使用以下代码发送脉冲数。效果很好。
private void irSend(int freqHz, int[] pulseTrainInMicroS) {
int [] pulseCounts = new int [pulseTrainInMicroS.length];
for (int i=0; i<pulseTrainInMicroS.length; i++) {
long iValue = pulseTrainInMicroS[i] * freqHz / 1000000;
pulseCounts[i] = (int) iValue;
}
m_IRService.transmit(freqHz, pulseCounts);
}
昨天它停止工作时,我开始仔细观察它。
我注意到传输的波形与请求的脉冲序列没有任何关系。即使下面的代码也不能正常工作!有
private void TestSend() {
int [] pulseCounts = {100, 100, 100};
m_IRService.transmit(38000, pulseCounts);
}
生成的波形有很多问题,因此完全没有用。
- 波形完全错误
- 频率错误,脉冲间隔不规则
- 它们不可重复
查看解调波形:
如果我的 100、100、100 被正确渲染,我应该看到两个 2.6ms 的脉冲(在 4.4.3(?)100 us 之前)。相反,我收到(见附件)“[解调]不可重复1.BMP”和“[解调]不可重复2.BMP”。请注意波形不是 2 个脉冲...事实上,它甚至不可重复。
对于下面的捕获,当检测到 IR 时信号变低。
我们应该看到两个脉冲在它们之间持续 2.6 毫秒和 2.6 毫秒变低(见下面的绿线)。
我也尝试过使用 50、50、50 的较短脉冲,并观察到第一个脉冲也不正确(见下文)。
查看调制波形:
频率不正确;相反,它大约是 18kHz 且不规则。
我对此非常有经验,并且接受过电子方面的正规教育。
在我看来 ConsumerIrManager.transmit( )...
中有一个错误
奇怪的是,phone 附带的 "WatchOn" 应用程序仍然有效。
感谢您提供的任何见解。
测试设备:
Tektronix TDS-2014B,100 MHz,用于峰值检测模式。
正如@IvanTellez 所说,Android 中对此功能进行了更改。奇怪的是,当我让它输出简单的红外信号(用于故障排除目的)时,该功能的行为如上所示(不稳定,载波频率错误等)。当我最终恢复正常类型的红外信号时,它工作正常。
我昨天将我的 Samsung Galaxy S4 从最新的 KitKat 升级到 Lollipop (5.0.1),我使用了几个月的红外遥控应用程序停止工作。
由于我使用的是 KitKat ConsumerIrManager 的最新副本,因此 transmit() 函数使用以下代码发送脉冲数。效果很好。
private void irSend(int freqHz, int[] pulseTrainInMicroS) {
int [] pulseCounts = new int [pulseTrainInMicroS.length];
for (int i=0; i<pulseTrainInMicroS.length; i++) {
long iValue = pulseTrainInMicroS[i] * freqHz / 1000000;
pulseCounts[i] = (int) iValue;
}
m_IRService.transmit(freqHz, pulseCounts);
}
昨天它停止工作时,我开始仔细观察它。
我注意到传输的波形与请求的脉冲序列没有任何关系。即使下面的代码也不能正常工作!有
private void TestSend() {
int [] pulseCounts = {100, 100, 100};
m_IRService.transmit(38000, pulseCounts);
}
生成的波形有很多问题,因此完全没有用。
- 波形完全错误
- 频率错误,脉冲间隔不规则
- 它们不可重复
查看解调波形: 如果我的 100、100、100 被正确渲染,我应该看到两个 2.6ms 的脉冲(在 4.4.3(?)100 us 之前)。相反,我收到(见附件)“[解调]不可重复1.BMP”和“[解调]不可重复2.BMP”。请注意波形不是 2 个脉冲...事实上,它甚至不可重复。
对于下面的捕获,当检测到 IR 时信号变低。
我们应该看到两个脉冲在它们之间持续 2.6 毫秒和 2.6 毫秒变低(见下面的绿线)。
我也尝试过使用 50、50、50 的较短脉冲,并观察到第一个脉冲也不正确(见下文)。
查看调制波形: 频率不正确;相反,它大约是 18kHz 且不规则。
我对此非常有经验,并且接受过电子方面的正规教育。
在我看来 ConsumerIrManager.transmit( )...
中有一个错误奇怪的是,phone 附带的 "WatchOn" 应用程序仍然有效。
感谢您提供的任何见解。
测试设备: Tektronix TDS-2014B,100 MHz,用于峰值检测模式。
正如@IvanTellez 所说,Android 中对此功能进行了更改。奇怪的是,当我让它输出简单的红外信号(用于故障排除目的)时,该功能的行为如上所示(不稳定,载波频率错误等)。当我最终恢复正常类型的红外信号时,它工作正常。