android 空調遙控器——紅外裝置(基礎)
阿新 • • 發佈:2019-02-15
最近專案中需要用到 用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 空調遙控器——簡單傳送內容