Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Android中传输红外信号_Android_Infrared - Fatal编程技术网

如何在Android中传输红外信号

如何在Android中传输红外信号,android,infrared,Android,Infrared,我有十六进制格式的红外序列,我想通过点击按钮从设备上传输。我找不到任何说明如何用示例实现它的文档。任何帮助都将不胜感激 编辑: 十六进制代码示例:E172E817(NEC格式) 这个十六进制代码是由arduino使用adafruit的IR库从投影仪遥控器中捕获的 我已尝试使用以下代码传输它: consumerIRManager.transmit(70000,new int[]{57714,59415}); 当我运行它时,没有错误,但它不会传输任何IR代码。我相信您需要的是GitHub上的项目。

我有十六进制格式的红外序列,我想通过点击按钮从设备上传输。我找不到任何说明如何用示例实现它的文档。任何帮助都将不胜感激

编辑:

十六进制代码示例:E172E817(NEC格式) 这个十六进制代码是由arduino使用adafruit的IR库从投影仪遥控器中捕获的

我已尝试使用以下代码传输它:

consumerIRManager.transmit(70000,new int[]{57714,59415});

当我运行它时,没有错误,但它不会传输任何IR代码。

我相信您需要的是GitHub上的项目。它具有发出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);
您可以看到红外设备将发送信号。要知道它是否正在发送信号,请将您的设备放在另一台设备的摄像头前,它将显示红外爆炸机闪烁

注意: 现在的问题是你需要知道红外信号的频率,也就是说你需要解码信号

要解码红外信号,这可能对你有帮助

如果在评论中给出否决投票的理由,那将很有帮助。我已经用十六进制格式更新了问题。我们已经通过在投影仪遥控器中使用红外发射器打开投影仪来测试这个十六进制代码。现在我想用android实现同样的功能。你能提供准确的答案来实现这一点吗?仅仅十六进制代码是不够的。我甚至不知道这个十六进制代码代表什么,也不知道它是如何编码的。您是如何捕获此代码的?使用哪个程序或设备?它是pronto十六进制格式的吗?你看,有很多问题需要回答,试着弄清楚你自己,也许在这里检查一下:由于你没有提供任何源代码,我无法进一步帮助你。非常感谢。至少它传输了一些东西,尽管传输的数据与作为参数传递的十六进制代码不同(我们使用arduino对其进行了测试)。我想我需要更改IrCommand类中的一些默认值来实现它。