通过audioinput解码遥控器代码

我目前正在编写一个作为互联网广播function的Android应用程序。 该应用程序的部分function是它可以通过红外遥控器进行控制。 红外遥控码通过麦克风端口以模拟audioforms进入。 如果我logging一些信号,并在Audacity中查看它们,我很容易看到每个代码是什么。 例如,以下是0111111010011001011111101000001或0x3F4CBF41。 在这里输入图像说明 我的问题是我怎样才能编程检测这些信号,当他们进来,并将其转换为整数代码数字。 我已经研究过一些打包的解决scheme,比如LIRC,但是它们都是用C编写的,很难整合。 在我看来,像土生土长的人会为了做这么简单的分析而杀人。 我也研究过音乐库这样的图书馆,但我找不到任何简单的方法来实时转换代码。

Solutions Collecting From Web of "通过audioinput解码遥控器代码"

从您的问题中可以清楚地看出,您熟悉PWM和读取从IR接收器接收到的信号的方法。 因此,我研究了如何使用java将数据存储在一个方法中,这个方法可以像您的大胆窗口一样轻松解释。

javax.sound.sampled.spi中有几个方法,我认为会有所帮助。

第一个是AudioFileReader getAudioStream() 。 这将返回一个AudioStream ,它有几个可能certificate有用的方法。 我认为最方便的是read() ,它返回stream中的下一个字节。 你可以提供一个字节数组来读取部分,甚至整个数据stream,如果更方便的话。

所以,现在你有一个字节列表或数组,你可以定期的将它们解释为高或低(因为这是采样audio,每个字节之间的时间是恒定的),这就是PWM解码所需要的!

通过find一个近似的端点,您可以随时间变换一个字节模式为高/低持续时间模式。 既然我知道你可以阅读(在你的问题中演示),我将跳过迂腐的转换,但将hhhlhllhhhhhhlllhh转换为代码的hex表示是微不足道的。

TL; DR:捕获stream,读取每个字节,通过时间转换,转换为二进制。