1. 程式人生 > >android 空調遙控器——紅外裝置(基礎)

android 空調遙控器——紅外裝置(基礎)

最近專案中需要用到 用android 手機控制空調,於是小編就下了心思研究了一下紅外開發,去網上查了查,這方面的內容少之又少,所以決定自己搞一搞,好了廢話不多說,開搞!

1、要求:呼叫手機紅外裝置需要注意,你得看看手機上有沒有紅外發射器(本人的是榮耀V8,自帶紅外裝置)據小編自己瞭解 應該是4.4版本 之後的android手機才有機會有紅外發射裝置因為細心的小編髮現 當呼叫裡面方法時 需要加SDK版本判斷

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
或者
@RequiresApi(api = Build.VERSION
_CODES.KITKAT)

這兩個意思是都需要API 為19的手機 小編自行理解不喜勿噴;

2、好說完以上要求,來具體說說怎麼呼叫這個紅外發射裝置,或者說是驅動;
首先先加一個許可權和一個過濾器

<uses-permission android:name="android.permission.TRANSMIT_IR" />
這個許可權呢就是呼叫紅外裝置就不多說

<uses-feature android:name="android.hardware.ConsumerIrManager" />

這個過濾器的作用主要是給應用市場提個醒 Android Market會根據uses-feature
過濾所有你裝置不支援的應用 再通俗點說就是沒有ConsumerIrManager這個類的android裝置 在應用市場上看不到此應用。(因為版本太低 下載下來也沒用)

3、紅外控制類 ConsumerIrManager
具體怎麼呼叫看程式碼(註釋寫的很清楚了)

//需要api大於19與下面if判斷用途類似
@RequiresApi(api = Build.VERSION_CODES.KITKAT)

public class InfraredActivity extends BaseActivity {
    //獲取紅外控制類
    private ConsumerIrManager IR;
    //判斷是否有紅外功能
boolean IRBack; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_infrared); inItEvent(); } //初始化事務 private void inItEvent() { //獲取ConsumerIrManager例項 IR = (ConsumerIrManager) getSystemService(CONSUMER_IR_SERVICE); //如果sdk版本大於4.4才進行是否有紅外的功能(手機的android版本) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { IRBack = IR.hasIrEmitter(); if (!IRBack) { showToast("對不起,該裝置上沒有紅外功能!"); } else { showToast("紅外裝置就緒");//可進行下一步操作 } } } /** * 發射紅外訊號 * * @param carrierFrequency 紅外傳輸的頻率,一般的遙控板都是38KHz * @param pattern 指以微秒為單位的紅外開和關的交替時間 */ private void sendMsg(int carrierFrequency, int[] pattern) { IR.transmit(carrierFrequency, pattern); } }

4、以上就是紅外的第一步(基礎中的基礎、重中之重)怎麼例項化ConsumerIrManager ,以及要使用的方法。

想詳細瞭解 看小編下一篇

android 空調遙控器——簡單傳送內容