|
@@ -2,15 +2,20 @@ package com.info666.app.infraredRemote.api;
|
|
|
|
|
|
import android.content.Context;
|
|
|
import android.os.Build;
|
|
|
+import android.os.Handler;
|
|
|
+import android.os.HandlerThread;
|
|
|
import android.util.Log;
|
|
|
import android.webkit.JavascriptInterface;
|
|
|
|
|
|
import com.alibaba.fastjson2.JSON;
|
|
|
|
|
|
+import cn.hutool.core.exceptions.ExceptionUtil;
|
|
|
+
|
|
|
public class ConsumerIrManagerApi {
|
|
|
|
|
|
private ConsumerIrManagerApi instance;
|
|
|
private android.hardware.ConsumerIrManager service;
|
|
|
+ private Handler mHandler ;
|
|
|
|
|
|
public ConsumerIrManagerApi(Context context) {
|
|
|
//Android4.4才开始支持红外功能
|
|
@@ -18,6 +23,9 @@ public class ConsumerIrManagerApi {
|
|
|
// 获取系统的红外遥控服务
|
|
|
service = (android.hardware.ConsumerIrManager) context.getApplicationContext().getSystemService(Context.CONSUMER_IR_SERVICE);
|
|
|
}
|
|
|
+ HandlerThread handlerThread = new HandlerThread("consumerIrThread");//创建一个handlerThread线程
|
|
|
+ handlerThread.start();//启动该线程
|
|
|
+ mHandler = new Handler(handlerThread.getLooper());
|
|
|
}
|
|
|
|
|
|
public ConsumerIrManagerApi getConsumerIrManager(Context context) {
|
|
@@ -50,9 +58,17 @@ public class ConsumerIrManagerApi {
|
|
|
*/
|
|
|
@JavascriptInterface
|
|
|
public void transmit(int carrierFrequency, int[] pattern) {
|
|
|
- Log.d("ConsumerIrManagerApi","transmit("+carrierFrequency+","+ JSON.toJSONString(pattern) +")");
|
|
|
if (service != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
|
|
|
- service.transmit(carrierFrequency, pattern);
|
|
|
+ //异步发射
|
|
|
+ try {
|
|
|
+ mHandler.post(()->{
|
|
|
+ Log.d("ConsumerIrManagerApi","transmit("+carrierFrequency+","+ JSON.toJSONString(pattern) +")");
|
|
|
+ service.transmit(carrierFrequency, pattern);
|
|
|
+ });
|
|
|
+ }catch (Exception e){
|
|
|
+ e.printStackTrace();
|
|
|
+ Log.e("--红外发射失败--", ExceptionUtil.getSimpleMessage(e));
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|