gpt4 book ai didi

android - 用android发送64位红外信号

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:39:09 25 4
gpt4 key购买 nike

使用树莓派 3 和红外接收器。在名为 LIRC 的库的帮助下,我记录了我的 android 盒子 Remote 的信号。

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 发送红外信号的库。

最佳答案

我测试了ConsumerIrManager在 Redmi Note 4 上,它可能也适用于 Note3。

向 list 添加权限:

<uses-permission android:name="android.permission.TRANSMIT_IR" />

在代码中:

  1. 检索 ConsumerIrManager

val irService = getSystemService(Context.CONSUMER_IR_SERVICE) as ConsumerIrManager
  1. 检查发射器是否存在

irService.hasIrEmitter()
  1. 检查发射器是否支持目标频率

fun isSupportedFrequency(irService: ConsumerIrManager, targetFreq: Int): Boolean {
irService.carrierFrequencies.forEach {
if (it.minFrequency <= targetFreq && targetFreq <= it.maxFrequency) {
return true
}
}
return false
}
  1. 传输数据

irService.transmit(targetFreq, data)

UPD1:

要发送 64 位 key ,您可以将它们分成两个 32 位 key 。

UPD2:

引擎盖下ConsumerIrManager使用 ConsumerIrService ,它使用 native 方法 private static native int halTransmit(int carrierFrequency, int[] pattern); ,它仅支持 32 位模式切片。因此,如果拆分无济于事,可能没有发送 64 位切片的 hacky 方法。

关于android - 用android发送64位红外信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51563771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com