2016-08-15 36 views
-3
int[] power= {123,339,23,54,23,14,23,16,21,14,21,16,21,14,23,16,21,16,21,14,23,53,23,15,22,16,21,54,23,14,23,16,21,16,21,54,23,54,23,53,23,54,23,14,23,54,23,14,23,54,22,54,23,16,21,16,21,14,23,14,23,16,21,16,21,54,23,54,23,15,22,15,22,14,23,14,23,14,23,14,23,53,23,54,23,14,23,14,23,16,21,54,23,14,23,16,21,14,23,16,21,14,23,16,21,14,23,53,23,53,23,54,23,54,23,2500}; 
ConsumerIrManager mCIR = (ConsumerIrManager) getSystemService(android.content.Context.CONSUMER_IR_SERVICE); 
    mCIR.transmit(47000, power); 

我已經在清單中聲明。它不會崩潰,但我不知道它是否傳輸或不傳播。之後我不知道如何知道它將傳輸什麼以及它是否傳輸或不傳輸。所以請告訴我這是不是正確的代碼,或者我是如何通過編程檢查代碼是否正常工作。 在此先感謝。如何通過Android手機傳輸紅外線,如電視開機或關機?

+0

我使用4.4+版本的Android的.. –

+0

您的設備是否有一個紅外線發射?如果沒有,那麼你無法完成這項工作。 –

+0

是的..我在發送前檢查.. –

回答

0
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; 
} 
} 

我還設置在menifest文件的權限。

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

相關問題