Используя raspberry pi 3 и инфракрасный приемник. с помощью библиотеки под названием LIRC я записал сигнал своего пульта дистанционного управления android box.
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
Проблема в том, что я не могу найти библиотеку, которая могла бы помочь мне написать код для отправки ИК-сигнала с моего Note3.
А это developer.android.com/reference/android/hardware/…
Я тестировал ConsumerIrManager на Redmi Note 4, вероятно, он будет работать и на Note3.
Добавьте разрешение в манифест:
<uses-permission android:name = "android.permission.TRANSMIT_IR" />
И в коде:
ConsumerIrManagerval irService = getSystemService(Context.CONSUMER_IR_SERVICE) as ConsumerIrManager
irService.hasIrEmitter()
fun isSupportedFrequency(irService: ConsumerIrManager, targetFreq: Int): Boolean {
irService.carrierFrequencies.forEach {
if (it.minFrequency <= targetFreq && targetFreq <= it.maxFrequency) {
return true
}
}
return false
}
irService.transmit(targetFreq, data)
Чтобы отправить 64-битные ключи, возможно, вы можете разделить их на два 32-битных ключа.
Под капотом ConsumerIrManager использует ConsumerIrService, который использует собственный метод private static native int halTransmit(int carrierFrequency, int[] pattern);, который поддерживает только 32-битные срезы шаблонов. Так что, вероятно, нет хакерского способа отправить 64-битные фрагменты, если разделение не поможет.
Это не очень хорошее решение, но в любом случае вы можете преобразовать свои 64-битные ИК-коды в wav-сигналы (или даже записать их непосредственно с ИК-пульта) и отправить их через MediaPlayer (или другой плеер) на ваш Android-бокс с помощью внешнего ИК-передатчика на аудиовыходе, например это или что.
Отметьте это forum.xda-developers.com/showthread.php?t=1670289