Как передать ИК-сигнал в Android

У меня есть последовательность IR, доступная в шестнадцатеричном формате, которую я хочу передать с устройства одним нажатием кнопки. Я не смог найти никакой документации, которая объясняет, как это реализовать на примере. Любая помощь будет оценена по достоинству.

Изменить:

Пример шестнадцатеричного кода: E172E817 (формат NEC) Этот шестнадцатеричный код был получен с пульта дистанционного управления проектора с помощью arduino с использованием библиотеки IR от Adafruit.

Я попытался передать его, используя следующий код:

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

Когда я запускаю его, ошибки нет, но он не передает никакого ИК-кода.


person Tushar Kathuria    schedule 15.02.2016    source источник
comment
Было бы полезно, если бы в комментарии была указана причина отрицательного голосования.   -  person Tushar Kathuria    schedule 15.02.2016


Ответы (2)


Я считаю, что вам нужен проект AndroidInfrared на 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);
person pleft    schedule 15.02.2016
comment
Я обновил вопрос в шестнадцатеричном формате. Мы протестировали этот шестнадцатеричный код, включив проектор с помощью инфракрасного передатчика на пульте дистанционного управления проектора. Теперь я хочу реализовать то же самое, используя android. Можете ли вы дать точный ответ для достижения этого. - person Tushar Kathuria; 16.02.2016
comment
Одного шестнадцатеричного кода недостаточно. Я даже не знаю, что означает этот шестнадцатеричный код или как он был закодирован. Как вы зафиксировали этот код? с помощью какой программы или устройства? Он в шестнадцатеричном формате? Вы видите, что есть много вопросов, на которые нужно ответить, попробуйте разобраться сами, возможно, проверьте здесь: remotecentral.com /cgi-bin/codes Поскольку вы не предоставили исходный код, я больше не могу вам помочь. - person pleft; 16.02.2016
comment
Большое спасибо. Хоть что-то передал, правда передаваемые данные не совпадают с шестнадцатеричным кодом, переданным в качестве параметра (мы тестировали на ардуино). Я думаю, что мне нужно будет изменить некоторые значения по умолчанию в классе IrCommand, чтобы добиться этого. - person Tushar Kathuria; 18.02.2016

Проверьте это

      //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?

person AgentP    schedule 19.02.2019