android功能:蓝牙通信、手机遥控器、红外编码、可自学习红外编码
GITHUB项目地址:https://github.com/wjbianjason/IrDA
大家可以看下图片是否是您的需要
该软件含有一个程序包com.ds.IrDA。该程序包含有6个Java文件,其中主要的有5个java文件,下面会依次介绍。另外还有3个xml显
示文件,主要的有client.xml实现操作界面,device.xml显示搜索到的蓝牙列表。主要就是蓝牙通信,并且利用Android里里面最简单
的存储方式SharedPreferences来存取自学习到的红外编码。点击学习按钮后,按一下你想学习的那个按键然后将该按键的编码传过
来,学习完了,它会自动提示学习完毕的,你可以自己点学习完毕提前结束学习,当然编码肯定不是你手动输入的,而是你通过红
外接收器量化电平后输出的编码。
(1)ClientAvtivity.java是客户端界面的activity,主要功能是实现搜索、画图、命令发送的和数据接收的显示。
1、点击“开始搜索”键执行以下代码。
转到DeviceListActivity.java进行蓝牙设备的搜索和显示。
2、协议列表的建立和选择
3、打开客户端界面时的存储数据读取操作,存储方式为SharedPreferences。
4、各类按键的操作设定
5、学习键的设定
6、编码名添加键的设定
7、学习完毕键的设定
8、广播接收的各类响应代码如下,实现对其他java文件广播事件的处理,其中包括对自学习红外编码数据的接收。
9、红外编码数据的发送,通过进行发送隐式intent让相应广播器接收处理
10、对选择设备的响应接收,创建蓝牙设备列表的activity时是用startActivityForResult()方法,所以可通过onAcitvityResult方法来接收返回的数据,即选择的蓝牙设备名和地址。
(2)DeviceListActivity.java,实现的功能是显示搜索到的蓝牙设备。
1、注册广播接收,并建立ListView来显示蓝牙设备
2、 广播接收处理,处理找到设备和蓝牙搜索结束的广播
3、处理蓝牙设备选择的触屏选择
(3)BluetoothClientService.java主要实现客户端界面后台的各项功能,包括数据发送和接收,蓝牙设备的查找,并注册相应的广播接收来响应相应的信息,又通过发送广播将信息传输出去。
1、打开蓝牙适配器,开始搜索
2、发现蓝牙设备后,发送广播告知DeviceListActivity.java。
3、广播接收器的注册,从中可以看到这个service具体处理的广播信号
4、 接收数据的处理,根据接收字节流的前两个字节判定接收的数据是属于哪一类型,例如发送的反馈,自学习的命令。其中包括新建txt 文件存储自学习的红外编码字节流,通过study_order确定每个按键编码在txt文件里的起始位置,通过study_num存储每个按键编码在txt文件里的字节长度
5、调用通信进程发送数据,如果选择的是自学习红外协议,通过打开存储文件根据study_order和study_num找到相应的按键编码,再进行发送。
(4)BluetoothClientConnThread.java建立一个蓝牙设备连接进程,主要实现蓝牙设备的连接,建立通信信道。
(5)BluetoothCommunThread.java是通信进程,用于具体数据的接收和发送
在这个文件中存储了NEC协议的编码,当选择的是NEC编码时,会直接从该文件中读取编码命令。
1、NEC协议编码的设定
2、Converse函数,将0、1二进制数转化为本次项目需要的显示电平时长的编码。
3、实现数据的接收
4、实现红外编码的发送
好了,基本就这些了,这些都是之前写的工程了,图片也是之前写傻瓜书时截的,若有什么不明白的可以把工程下下来看
作者:可怜的橡皮擦
链接:https://www.jianshu.com/p/d6493cb555f4