有没有办法在Android中接收IR信号?
在搜索时,我找到了从Android设备传输数据的方法.
发现这个非常有用:https://github.com/rngtng/IrDude
那么,是否也可以接收其他红外发射设备(如遥控器)产生的红外信号?如果是,我想在我的应用UI中打印这些信号(十六进制值).请问有谁可以解决这个问题,请... :)
我正在使用Galaxy S4进行开发.
我有一个控制IR发射器的应用程序,并希望能够访问IR代码的范围.这是免费提供的,还是订阅?
(像和谐和罗技这样的公司有它们 - 只是不确定我是如何获得它的)
(谷歌到目前为止没有给我任何有用的东西)
注意 - 要清楚 - 我想要一个电视,DVD播放器等设备列表 - 比如用通用遥控器打印的设备或下载的设备.但是,我想要实际的规格,所以我可以控制IR二极管.
从热成像的早期开始,红外热像仪经常使用从黑色到蓝色,品红色,橙色,黄色到亮白色的独特调色板.这个调色板通常被称为Iron或Ironbow.
这是使用前视红外相机拍摄的图像的典型假色可视化(来源:维基百科).
Lcamtuf的"Termografia kot" - 典型的假彩色红外线

在一个专门的红外图像论坛上,我发现了一个2005年的帖子,其中一个独立的调色板似乎与我正在寻找的一样.
不明来源的离散FLIR调色板

然而,与彩虹调色板一样,有一个定义调色板的简洁分析表达式会很不错.
对于那些使用过GNUPLOT的人来说,这个调色板可能看起来很熟悉,因为默认的PM3D调色板运行着黑色 - 蓝色 - 洋红色 - 橙色 - 黄色.
GNUPLOT PM3D调色板

此调色板具有简洁的定义
r = Math.round(255*Math.sqrt(x));
g = Math.round(255*Math.pow(x,3));
b = Math.round(255*(Math.sin(2 * Math.PI * x)>=0?
Math.sin(2 * Math.PI * x) : 0 ));
Run Code Online (Sandbox Code Playgroud)
然而,其他调色板看起来并不完全.有点太褐色了我的口味.有关原点的任何其他信息或FLIR相机中使用的调色板的分析表达式都会有所帮助.
我创建了一个JSFiddle来玩不同的调色板.
我建立了一个Android应用程序,以控制我的空调,它曾经在Android 4.1(我使用HTC M8手机)工作正常,现在升级到5.0棒棒糖后它停止工作我附加了一个样本片段.
没有调试错误,它表示IR已传输.
- 空调品牌三星(包括开关的红外代码)
PS:我已经模拟了所有连接的代码,
//To hold my codes for remote say on, off temp+, temp-, swing etc
public class TransmissionCodes{
private int[] transmission;
private int frequency;
//+getters +setters +constructor
}
//To hold all the TransmissionCodes objects
SparseArray<TransmissionCodes> sequence ;
//power on
sequence.put(0, new TransmissionCodes(38000, "123,339,23,54,23,14,23,16,21,14,21,16,21,14,23,16,21,16,21,14,23,53,23,15,22,16,21,54,23,14,23,16,21,16,21,54,23,54,23,53,23,54,23,14,23,54,23,14,23,54,22,54,23,16,21,16,21,14,23,14,23,16,21,16,21,54,23,54,23,15,22,15,22,14,23,14,23,14,23,14,23,53,23,54,23,14,23,14,23,16,21,54,23,14,23,16,21,14,23,16,21,14,23,16,21,14,23,53,23,53,23,54,23,54,23,2500"));
//power off
sequence.put(1, new TransmissionCodes(38000, "123,339,23,54,23,14,23,16,21,14,21,16,21,14,23,16,21,16,21,14,23,53,23,15,22,16,21,54,23,14,23,16,21,16,21,54,23,54,23,53,23,54,23,14,23,54,23,14,23,54,22,54,23,16,21,16,21,14,23,14,23,16,21,16,21,54,23,54,23,15,22,15,22,14,23,14,23,14,23,14,23,53,23,54,23,14,23,14,23,16,21,54,23,14,23,16,21,14,23,16,21,14,23,16,21,14,23,53,23,53,23,54,23,54,23,2500"));
//IR call in main Activity
findViewById(R.id.button).post(new Runnable() {
public void run() {
ConsumerIrManager mCIR = (ConsumerIrManager) getSystemService(android.content.Context.CONSUMER_IR_SERVICE);
mCIR.transmit(sequence.getFrequency, sequence.getTransmission);
}
});
Run Code Online (Sandbox Code Playgroud)
这是一个接近但无法帮助的链接. Stack Overflow参考
有人可以帮我把东西放在一起,或者我错过了什么?
使用树莓派3和红外线接收器.在一个名为LIRC的库的帮助下,我记录了我的android盒遥控器的信号.
begin remote
name MyRemote
driver devinput
bits 64
eps 30
aeps 100
one 0 0
zero 0 0
pre_data_bits 64
pre_data 0x0
gap 509
toggle_bit_mask 0x0
frequency 38000
begin codes
KEY_1 0x116B000001000268
KEY_2 0x1169000001000267
KEY_3 0x116800000100026E
KEY_4 0x116E00000100025C
KEY_5 0x116C000001000263
KEY_6 0x116800000100024E
KEY_7 0x115D000001000268
KEY_8 0x116E000001000263
KEY_9 0x116B000001000267
KEY_0 0x116F000001000265
KEY_DOWN 0x0360000001000076
KEY_LEFT 0x1167000001000264
KEY_UP 0x117800000100025E
KEY_RIGHT 0x1169000001000266
KEY_BACK 0x1170000001000262
KEY_ENTER 0x1167000001000268
end codes
end remote
Run Code Online (Sandbox Code Playgroud)
问题是我找不到一个可以帮助我编写代码来从我的Note3发送IR信号的库.
我有一台可以用作电视的显示器(它有一个DVI-D连接器和一个电缆连接器.)有一段时间我的电脑上有一个红外设备用于同步我的PDA和手机.
我希望我的电脑的红外/ irDA设备向我的显示器发送信号,以便在电视和电脑模式之间切换.(或者以其他方式控制显示器,例如在登录/注销期间打开和关闭显示器.)为此,我需要:
凭借近30年的编程经验,代码没有问题.但由于我对红外设备的唯一了解非常有限,我需要一些有用的提示和技巧.
一个谷歌搜索将提供大量的是有用的链接.但我可以使用帮助找到最有用的.
我正在做一个关于控制两个传感器(超声波和红外线)的项目,用Arduino管理它们.该IR接收器有一个过滤器系统内,所以它在接收到36千赫的频率.我使用模块srf04来处理超声波的东西.如果我做一个必须只控制一个传感器的程序,它就可以工作.但我必须将两个信号插入到一个结果中.所以我使用了protothreads!但它不起作用......错误是什么?
这是代码:
#include <pt.h>
int iro = 8, iri = 4, us = 12, distanza, us_vcc = 13, ir_vcc = 7;
long durata;
static struct pt pt1, pt2, pt3;
static int irthread(struct pt *pt) {
PT_BEGIN(pt);
while(1) {
PT_WAIT_UNTIL(pt, 1>0);
digitalWrite(iro, HIGH);
delayMicroseconds(9);
digitalWrite(iro, LOW);
delayMicroseconds(9);
}
PT_END(pt);
}
static int usthread(struct pt *pt) {
static unsigned long timer = 0;
PT_BEGIN(pt);
while(1) {
PT_WAIT_UNTIL(pt, millis() - timer > 200);
timer = millis();
pinMode(us, OUTPUT);
digitalWrite(us, LOW);
delayMicroseconds(5); …Run Code Online (Sandbox Code Playgroud) 我在Android 5.0下运行的Galaxy S5上遇到了IR发射器的问题.
在我将其更新到5.0之前,我的应用程序完全正在使用我的手机,但现在,我想要管理的设备没有任何反应.当我点击我的应用程序发送IR代码时,指示灯闪烁表示IR管理器已激活,我可以接收到连接到我的示波器的IR光电二极管的信号.不幸的是,我得到的信号形状与应有的信号非常不同.
我可以补充一点,在Android 4.4.2下我的平板电脑上运行的相同代码仍能正常运行.
为了帮助回答我的问题,我的代码示例:
private String commande="0000 0070 0000 0032 0080 003F 0010 0010 0010 0030 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 "
+ "0010 0010 0010 0010 0010 0010 0010 0010 0010 0030 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 "
+ "0030 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 …Run Code Online (Sandbox Code Playgroud) Windows Hello 摄像头使用红外摄像头和红外发射器,并将两者结合起来感测帧中的深度。它类似于 Apple 的 FaceID 或 Xbox Kinect 中的技术。访问 Windows Hello 摄像头的深度传感功能对于研究人员和应用程序开发人员来说可能非常有价值。
\n我能够创建一个应用程序,该应用程序能够访问嵌入在启用 Windows Hello 的网络摄像头中的红外摄像头。然而我发现红外发射器的行为不一致。我已将代码发布到上面链接的 github 存储库中。
\n在我能够访问红外摄像机的每一帧后,我意识到我的摄像机没有打开Infrared Torch(摄像机红外发射器 LED)。但我知道红外手电筒可以工作,因为当我使用 Windows Hello 的面部识别功能时,红外手电筒确实会打开。
我发现驱动程序级别的 Windows 红外摄像头具有以下红外手电筒模式:
\n| 触摸模式 | 描述 |
|---|---|
| KSCAMERA_EXTENDEDPROP_IRTORCHMODE_OFF | Off |
| KSCAMERA_EXTENDEDPROP_IRTORCHMODE_ALWAYS_ON | Always on |
| KSCAMERA_EXTENDEDPROP_IRTORCHMODE_ALTERNATING_FRAME_ILLUMINATION … |
我使用这个代码来打开三星电视,调高和调低音量,但它对我不起作用。所以想知道我错过了什么或者我做错了什么,请建议我。
power.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
irSend(v);
}
});
volup.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
irSend(v);
}
});
voldown.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
irSend(v);
}
});
irData = new SparseArray<String>();
irData.put(R.id.voldown,
hex2dec("0000 006d 0022 0003 00a9 00a8 0015 003f 0015 003f 0015 003f 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 003f 0015 003f 0015 003f 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 …Run Code Online (Sandbox Code Playgroud)