深圳seo网站推广报价,wordpress需要登录才可以看到内容,岳阳做网站的公司,wordpress网站配置目录
一、申请权限
二、ConsumerIrManager(消费者红外管理器)
三、判断是否有红外功能
四、发射红外信号
1.准备用于发射的信息
2.消费者红外管理器发射信息
五、案例代码一览 红外遥控是一种近红外光线(频率为几万赫兹)作为遥控光源的遥控方式。
在Android4.4后提供了…目录
一、申请权限
二、ConsumerIrManager(消费者红外管理器)
三、判断是否有红外功能
四、发射红外信号
1.准备用于发射的信息
2.消费者红外管理器发射信息
五、案例代码一览 红外遥控是一种近红外光线(频率为几万赫兹)作为遥控光源的遥控方式。
在Android4.4后提供了红外遥控功能部分手机未提供该功能该功能由ConsumerIrManager(消费者红外管理器)控制。
一、申请权限
需要申请发射红外权限该权限无需动态申请仅在清单文件中声明即可。
!--发射红外权限无需动态申请--
uses-permission android:nameandroid.permission.TRANSMIT_IR/
二、ConsumerIrManager(消费者红外管理器)
ConsumerIrManager(消费者红外管理器)通过getSystemService()方法获取用于控制红外发射功能。
常用方法如下
hasIrEmitter(发射器)检查设备是否拥有红外发射器。有返回true没有返回false。getCarrierFrequencies(载体频率)获取可用的载波频率范围。手机的载波频率比较固定大都处在30kHz到56kHz之间。transmit发射红外信号。第一个参数为信号频率单位赫兹(Hz)家用电器的红外频率通常使用38000Hz第二个参数为整型数组形式的信号格式。
三、判断是否有红外功能
使用ConsumerIrManager的hasIrEmitter方法判断设备是否有红外功能。
//获取消费者红外管理器
ConsumerIrManager consumerIrManager (ConsumerIrManager) getSystemService(CONSUMER_IR_SERVICE);
//判断是否有红外发射器
if(consumerIrManager.hasIrEmitter()){textView.setText(该设备有红外发射器);
}
else {textView.setText(该设备无红外发射器);
}
四、发射红外信号
使用ConsumerIrManager的transmit方法发射红外信息。
1.准备用于发射的信息
红外信号由三部分组成分别是用户码、数据码、电路。其中用户码表示厂商代号每个厂家都有自己的唯一代号数据码表示按键的编号不同的数据码代表不同的按键电路格式表示红外信号的编码协议每种协议都有专门的指令格式。比如说电路61212对应的是NEC6121协议该协议的红外信号编码格式为引导码用户码数据码数据反码结束码其中引导码和结束码都是固定的数据反码由数据码按位取反得来真正变化的只有用户码和数据码。
然而解码仪获得的用户码和数据码并不能直接写在代码中因为液晶屏上的编码其实是十六进制数需要转换为二进制数才行。例如用户码4055对应的二进制数为0100 0000 01010101数据码44对应的二进制数为0100 0100按位取反得到数据反码的二进制数为1011 1011。可是transmit方法参数要传递整型数组形式的信号并不是二进制数这意味着二进制数还得转换成整型数组。那么整型数组里面存放的到底是些什么数据呢这就要从数字电路中的电平说起了。电平是“电压平台”的简称指的是电路中某一点电压的高低状态在数字电路中常用高电平表示“1”用低电平表示“0”。遥控器发射红外信号之时通过“560微秒低电平1680微秒高电平”代表“1”通过“560微秒低电平560微秒低电平”代表“0”。于是编写Android代码的时候使用“5601680”表示二进制的1使用“560560”表示二进制的0此处的560和1680只是大概的数值也可使用580、600替换560或者使用1600、1650替换1680。
//准备发射信息
int pattern[]{//开头两数字代表引导码9000,4500,//下面两行表示用户码560,560,560,1680,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,1680,560,560,560,1680,560,560,560,1680,560,560,560,1680,//下面一行表示数据码560,560,560,1680,560,560,560,560,560,560,560,1680,560,560,560,560,//下面一行表示数据反码560,1680,560,560,560,1680,560,1680,560,1680,560,560,560,1680,560,1680,//末尾两个数字表示结束码560,20000
};
2.消费者红外管理器发射信息
//发射普通家电红外频率一般为38kHz
consumerIrManager.transmit(38000,pattern);
五、案例代码一览
该界面由一个TextView与一个Button组成使用前请在清单文件申请发射红外权限。
public class MainActivity extends AppCompatActivity {private TextView textViewnull;private Button buttonnull;private ConsumerIrManager consumerIrManagernull;//设备是否有红外发射器-标志private boolean hasIrEmitterfalse;SuppressLint(MissingInflatedId)protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//获取控件textViewfindViewById(R.id.textView);buttonfindViewById(R.id.button);//获取消费者红外管理器consumerIrManager (ConsumerIrManager) getSystemService(CONSUMER_IR_SERVICE);//判断是否有红外发射器if(consumerIrManager.hasIrEmitter()){textView.setText(该设备有红外发射器);hasIrEmittertrue;}else {textView.setText(该设备无红外发射器);}setIrEmitter();}/*** 设置button能发射数据*/private void setIrEmitter(){//准备发射信息int pattern[]{//开头两数字代表引导码9000,4500,//下面两行表示用户码560,560,560,1680,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,1680,560,560,560,1680,560,560,560,1680,560,560,560,1680,//下面一行表示数据码560,560,560,1680,560,560,560,560,560,560,560,1680,560,560,560,560,//下面一行表示数据反码560,1680,560,560,560,1680,560,1680,560,1680,560,560,560,1680,560,1680,//末尾两个数字表示结束码560,20000};//设置发射按钮监听器button.setOnClickListener(new View.OnClickListener() {public void onClick(View view) {if(hasIrEmitter){//发射普通家电红外频率一般为38kHzconsumerIrManager.transmit(38000,pattern);}}});}
}
tag红外线红外光源红外遥控红外信号红外信息ConsumerIrManager