Met*_*lel 9 android infrared lirc
使用树莓派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信号的库.
我在 Redmi Note 4 上测试了ConsumerIrManager,可能它也适用于 Note3。
向清单添加权限:
<uses-permission android:name="android.permission.TRANSMIT_IR" />
并在代码中:
ConsumerIrManager
val irService = getSystemService(Context.CONSUMER_IR_SERVICE) as ConsumerIrManager
Run Code Online (Sandbox Code Playgroud)
irService.hasIrEmitter()
Run Code Online (Sandbox Code Playgroud)
fun isSupportedFrequency(irService: ConsumerIrManager, targetFreq: Int): Boolean {
irService.carrierFrequencies.forEach {
if (it.minFrequency <= targetFreq && targetFreq <= it.maxFrequency) {
return true
}
}
return false
}
Run Code Online (Sandbox Code Playgroud)
irService.transmit(targetFreq, data)
Run Code Online (Sandbox Code Playgroud)
要发送 64 位密钥,您可以将它们分成两个 32 位密钥。
在底层ConsumerIrManager
使用ConsumerIrService
,它使用本机方法private static native int halTransmit(int carrierFrequency, int[] pattern);
,仅支持 32 位模式切片。因此,如果分割没有帮助的话,可能没有什么奇怪的方法来发送 64 位切片。
归档时间: |
|
查看次数: |
459 次 |
最近记录: |