잡동사니

반응형

질문

내 응용 프로그램을 실행하고 IR 키를 보내야하는 button을 누르면 IR 키가 전송되지 않고 IR 키가 전송되지 않습니다. (나는 arduino를 사용하여 확인합니다) 아마도 내 전화에 대한 주파수가 잘못되었을 수 있습니다. (Redmi Note 5) 다른 공식이있을 수 있습니다. 주파수.
내 코드는 다음과 같습니다.
전송할 키 :

irData.put(R.id.buttonOn, hex2dec("0000 006d 0022 0003 00a9 00a8 0015 003f 0015 003f 0015 " +
                            "003f 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 003f 0015 003f 0015 003f 0015" +
                            " 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 003f 0015 0015 0015 0015" +
                            " 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0015 0015 003f 0015 003f" +
                            " 0015 003f 0015 003f 0015 003f 0015 003f 0015 0702 00a9 00a8 0015 0015 0015 0e6e"));'

IR 데이터를 반환하는 기능

protected String hex2dec(String irData) {
        List<String> list = new ArrayList<String>(Arrays.asList(irData
                .split(" ")));
        list.remove(0); // dummy
        int frequency = Integer.parseInt(list.remove(0), 16); // frequency
        list.remove(0); // seq1
        list.remove(0); // seq2

        for (int i = 0; i < list.size(); i++) {
            list.set(i, Integer.toString(Integer.parseInt(list.get(i), 16)));
        }

        frequency = (int) (1000000 / (frequency * 0.241246));
        list.add(0, Integer.toString(frequency));

        irData = "";
        for (String s : list) {
            irData += s + ",";
        }
        return irData;
    }

및 전송 방법

   public void transmitting(int frequency, int[] pattern) {
        ConsumerIrManager cIr = (ConsumerIrManager) getApplicationContext().getSystemService(Context.CONSUMER_IR_SERVICE);
        cIr.transmit(frequency, pattern);
    }

답변1

그것에 대한 샘플 코드가 있습니다. 시도해 주시겠습니까?

private IRCommand hex2ir(final String irData) {
    List<String> list = new ArrayList<>(Arrays.asList(irData.split(" ")));
    list.remove(0); // dummy
    int frequency = Integer.parseInt(list.remove(0), 16); // frequency
    list.remove(0); // seq1
    list.remove(0); // seq2

    frequency = (int) (1000000 / (frequency * 0.241246));
    int pulses = 1000000 / frequency;
    int count;

    int[] pattern = new int[list.size()];
    for (int i = 0; i < list.size(); i++) {
        count = Integer.parseInt(list.get(i), 16);
        pattern[i] = count * pulses;
    }

    return new IRCommand(frequency, pattern);
}

private class IRCommand {
    private final int freq;
    private final int[] pattern;

    private IRCommand(int freq, int[] pattern) {
        this.freq = freq;
        this.pattern = pattern;
    }
}


 

 

 

 

출처 : https://stackoverflow.com/questions/62922719/i-am-writing-android-application-and-i-cant-send-ir-key-here-is-my-code-i-don

반응형

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band