最近项目中需要用到 用android 手机控制空调,于是小编就下了心思研究了一下红外开发,去网上查了查,这方面的内容少之又少,所以决定自己搞一搞,好了废话不多说,开搞!
1、要求:调用手机红外设备需要注意,你得看看手机上有没有红外发射器(本人的是荣耀V8,自带红外设备)据小编自己了解 应该是4.4版本 之后的android手机才有机会有红外发射设备因为细心的小编发现 当调用里面方法时 需要加SDK版本判断
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
或者
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
- 1
- 2
- 3
这两个意思是都需要API 为19的手机 小编自行理解不喜勿喷;
2、好说完以上要求,来具体说说怎么调用这个红外发射设备,或者说是驱动;
首先先加一个权限和一个过滤器
<uses-permission android:name="android.permission.TRANSMIT_IR" />
这个权限呢就是调用红外设备就不多说
<uses-feature android:name="android.hardware.ConsumerIrManager" />
这个过滤器的作用主要是给应用市场提个醒 Android Market会根据uses-feature过滤所有你设备不支持的应用 再通俗点说就是没有ConsumerIrManager这个类的android设备 在应用市场上看不到此应用。(因为版本太低 下载下来也没用)
- 1
- 2
- 3
- 4
- 5
- 6
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);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
4、以上就是红外的第一步(基础中的基础、重中之重)怎么实例化ConsumerIrManager ,以及要使用的方法。
想详细了解 看小编下一篇
android 空调遥控器——简单发送内容
原博客地址 :https://blog.csdn.net/gywuhengy/article/details/72851553