我有十六进制格式的IR序列,我想通过点击按钮从设备传输。我找不到任何解释通过示例实现它的文档。任何帮助,将不胜感激。
编辑:
示例十六进制代码:E172E817(NEC格式)此十六进制代码是使用adafruit的IR库从arduino远程投影仪捕获的
我试图使用以下代码传输它:
consumerIRManager.transmit(70000,new int[]{57714,59415});
当我运行它时,没有错误,但它不传输任何IR代码。
我相信你需要的是GitHub上的AndroidInfrared项目。它具有发出NEC Ir命令的特定命令:
ConsumerIrManager manager = ConsumerIrManager.getSupportConsumerIrManager(context);
// Check whether IrEmitter is avaiable on the device.
if (!manager.hasIrEmitter()) {
Log.e("AndroidInfraredDemo", "Cannot found IR Emitter on the device");
}
// Build IR Command with predefined schemes.
IrCommand necCommand = IrCommand.NEC.buildNEC(32, 0x723F);
manager.transmit(necCommand);
检查一下
//Check for SDK version
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
//create an instance of ConsumerIrManager class
ConsumerIrManager cIr = (ConsumerIrManager) getApplicationContext().getSystemService(Context.CONSUMER_IR_SERVICE);
//Check weather device has the IR hardware component or not
boolean feature_consumer_ir = cIr.hasIrEmitter();
if (feature_consumer_ir) {
Log.i("Test",cIr.getCarrierFrequencies().toString());
Toast.makeText(this, "Yep this device has the IR Hardware Component", Toast.LENGTH_SHORT).show();
}else
{ Toast.makeText(this, "This Phone Does't have any IR Hardware Component", Toast.LENGTH_SHORT).show();
}
}
现在如果你想发送信号使用这个
int[] pattern=new int[2];
pattern[0]=1000000; // delay time in micro seconds
pattern[1]=1000000; // delay time in micro seconds
int frequency=57437537;
//call transmit method with pattern and frequency parameters using ConsumerIrManager object
cIr.transmit(frequency, pattern);
您可以看到IR设备将发送信号。要知道它正在发送的天气或者没有将您的设备放在另一台设备的摄像头前面,它会显示IR冲击波的闪烁
注意:现在的问题是你需要经常知道IR信号,即你需要解码信号。
为了获得IR信号解码,这可能会帮助你Is it possible to capture/receive IR signals in an Android application?