Java 如何从安卓系统传输红外线以打开电视电源、提高和降低音量

Java 如何从安卓系统传输红外线以打开电视电源、提高和降低音量,java,android,ios,infrared,Java,Android,Ios,Infrared,我在三星电视上使用了这段代码,上电,音量上下,但它对我不起作用。所以想知道我错过了什么,或者我做错了什么,请建议我 power.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { irSend(v); } }); volup.setOn

我在三星电视上使用了这段代码,上电,音量上下,但它对我不起作用。所以想知道我错过了什么,或者我做错了什么,请建议我

 power.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                irSend(v);
            }
        });

        volup.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                irSend(v);
            }
        });

        voldown.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                irSend(v);
            }
        });
        irData = new SparseArray<String>();
            irData.put(R.id.voldown,
                    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"));
            irData.put(R.id.volup,
                    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 003f 0015 003f 0015 003f 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 003f 0015 003f 0015 003f 0015 003f 0015 003f 0015 0702 00a9 00a8 0015 0015 0015 0e6e"));
            irData.put(R.id.power,
                    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 003f 0015 003f 0015 0015 0015 003f 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 003f 0015 0015 0015 003f 0015 003f 0015 003f 0015 003f 0015 0702 00a9 00a8 0015 0015 0015 0e6e"));



        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {

            irInit4KitKat();

        }
    }

@TargetApi(Build.VERSION_CODES.KITKAT)
public void irInit4KitKat() {

    // Get a reference to the ConsumerIrManager
    mCIR = (ConsumerIrManager) getSystemService(Context.CONSUMER_IR_SERVICE);

}


public void irSend(View view) {

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT){

        irSend4Kitkat(view);
    }
}

    @TargetApi(Build.VERSION_CODES.KITKAT)
    private void irSend4Kitkat(View view) {

if(mCIR.hasIrEmitter() == true){
    String data = irData.get(view.getId());
    if (data != null) {
    String values[] = data.split(",");
    int[] pattern = new int[values.length-1];

    for (int i=0; i<pattern.length; i++){
        pattern[i] = Integer.parseInt(values[i+1]);
    }
    Log.e("LOG", mCIR.getCarrierFrequencies()+ "@" + Integer.parseInt(values[0]) + "@" + pattern);

    mCIR.transmit(Integer.parseInt(values[0]), pattern);
    }
}else{
        Log.e("LOG", "not supported options");
        Toast.makeText(MainActivity.this , "This device is not Support infrared." , Toast.LENGTH_LONG).show();
        }
    }



    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)*26));
    }

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

    irData = "";
    for (String s : list) {
    irData += s + ",";
    }
    return irData;
     }
    }
power.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
伊森德(v);
}
});
setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
伊森德(v);
}
});
setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
伊森德(v);
}
});
irData=新SparseArray();
irData.放下(R.id.voldown,
hex2dec("0000 006d 0020003 00a9 00a8 0015 003f 0015 003f 0015 0015 0015 0015 0015 0015 0015 0015 0015 003f 0015 003f 0015 003f 0015 003f 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 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0035 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0010015 0702 00a9 00a8 0015 0015 0015 0e6e);
irData.put(R.id.volup,
hex2dec(“0000 006d 0020003 00a9 00a8 0015 003f 0015 003f 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 0015 0015 003f 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0035 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0035 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0010015 0702 00a9 00a8 0015 0015 0015 0e6e);
irData.put(R.id.power,
hex2dec(“0000 006d 0022 0003 00a9 00a8 0015 003f 0015 003f 0015 0015 0015 0015 0015 0015 0015 0015 003f 0015 003f 0015 003f 0015 003f 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 0015 0015 0015 0015 0015 0015 0015 0015 0015 003f 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 0015 0015 003f 0015 0015 0015 0015 0015 0015 00150015 0702 00a9 00a8 0015 0015 0015 0e6e);
if(Build.VERSION.SDK\u INT>=Build.VERSION\u code.KITKAT){
irInit4KitKat();
}
}
@TargetApi(Build.VERSION\u code.KITKAT)
公共无效irInit4KitKat(){
//获取对ConsumerManager的引用
mCIR=(consumerimager)getSystemService(Context.CONSUMER\u IR\u SERVICE);
}
公共无效irSend(视图){
if(Build.VERSION.SDK\u INT>=Build.VERSION\u code.KITKAT){
irSend4Kitkat(视图);
}
}
@TargetApi(Build.VERSION\u code.KITKAT)
私有void irSend4Kitkat(视图){
if(mCIR.hasiReporter()==true){
String data=irData.get(view.getId());
如果(数据!=null){
字符串值[]=data.split(“,”);
int[]模式=新的int[values.length-1];

例如:(int i=0;我从未做过这种类型的申请,所以请推荐我。谢谢我从未做过这种类型的申请,所以请推荐我
 <uses-permission android:name="android.permission.TRANSMIT_IR"
    android:required="false" />
<uses-feature android:name="android.hardware.consumerir" />