基于蓝牙的可自学习手机遥控器android应用

zengwenbo 9年前
   <p>android功能:蓝牙通信、手机遥控器、红外编码、可自学习红外编码</p>    <p>大家可以看下图片是否是您的需要</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/fb5979cfbdf3f6283bf7abe5111a9d75.png"></p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/eed4f9e57de6108a13d98312c6ae25ea.png"></p>    <p>该软件含有一个程序包com.ds.IrDA。该程序包含有6个 <a href="/misc/goto?guid=4959671943891288550" rel="nofollow,noindex">Java</a> 文件,其中主要的有5个java文件,下面会依次介绍。另外还有3个xml显</p>    <p>示文件,主要的有client.xml实现操作界面,device.xml显示搜索到的蓝牙列表。主要就是蓝牙通信,并且利用 <a href="/misc/goto?guid=4959671792203787710" rel="nofollow,noindex">Android</a> 里里面最简单</p>    <p>的存储方式SharedPreferences来存取自学习到的红外编码。点击学习按钮后,按一下你想学习的那个按键然后将该按键的编码传过</p>    <p>来,学习完了,它会自动提示学习完毕的,你可以自己点学习完毕提前结束学习,当然编码肯定不是你手动输入的,而是你通过红</p>    <p>外接收器量化电平后输出的编码。</p>    <p>(1)ClientAvtivity.java是客户端界面的activity,主要功能是实现搜索、画图、命令发送的和数据接收的显示。</p>    <p>1、点击“开始搜索”键执行以下代码。</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/894ebfc9bebfee8db6ce4f67598858f6.png"></p>    <p>转到DeviceListActivity.java进行蓝牙设备的搜索和显示。</p>    <p>2、协议列表的建立和选择</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/5b534c54b813625320a94b5eb2f69401.png"></p>    <p>3、打开客户端界面时的存储数据读取操作,存储方式为SharedPreferences。</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/c9fa2366403bd681c310fae5f8265750.png"></p>    <p>4、各类按键的操作设定</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/6ef0c45483f7058513579e86fb58c4ba.png"></p>    <p>5、学习键的设定</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/95147585b53d06751fe22bb642e2813d.png"></p>    <p>6、编码名添加键的设定</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/82a796285331793dedb852ab85dd879a.png"></p>    <p>7、学习完毕键的设定</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/b843122a846ff4df0583890721bf4d98.png"></p>    <p>8、广播接收的各类响应代码如下,实现对其他java文件广播事件的处理,其中包括对自学习红外编码数据的接收。</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/e68cebf4d3e9e602d8e0c2c9f55ee7dc.png"></p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/952632a32d58778d861afdd93f5ce58c.png"></p>    <p>9、红外编码数据的发送,通过进行发送隐式intent让相应广播器接收处理</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/86e3740c014907a4c00b1f013afe691f.png"></p>    <p>10、对选择设备的响应接收,创建蓝牙设备列表的activity时是用startActivityForResult()方法,所以可通过onAcitvityResult方法来接收返回的数据,即选择的蓝牙设备名和地址。</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/5210e14aa5249afb67d62077c48d5ea7.png"></p>    <p>(2)DeviceListActivity.java,实现的功能是显示搜索到的蓝牙设备。</p>    <p>1、注册广播接收,并建立ListView来显示蓝牙设备</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/9138e09c3c128de62baf7a83a84d0546.png"></p>    <p>2、 广播接收处理,处理找到设备和蓝牙搜索结束的广播</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/ffc1c89baa0d823a41a6c6473eb3c177.png"></p>    <p>3、处理蓝牙设备选择的触屏选择</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/eb2d0aacc4836bf8aa1a547c35e63320.png"></p>    <p>(3)BluetoothClientService.java主要实现客户端界面后台的各项功能,包括数据发送和接收,蓝牙设备的查找,并注册相应的广播接收来响应相应的信息,又通过发送广播将信息传输出去。</p>    <p>1、打开蓝牙适配器,开始搜索</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/6a20e7ec1cd67014ace4e40b0b1d2800.png"></p>    <p>2、发现蓝牙设备后,发送广播告知DeviceListActivity.java。</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/c9d2f6281ccc7f8d266850937a871063.png"></p>    <p>3、广播接收器的注册,从中可以看到这个service具体处理的广播信号</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/41fcb387a8da4a4ed0b8b18104db0d2f.png"></p>    <p>4、 接收数据的处理,根据接收字节流的前两个字节判定接收的数据是属于哪一类型,例如发送的反馈,自学习的命令。其中包括新建txt 文件存储自学习的红外编码字节流,通过study_order确定每个按键编码在txt文件里的起始位置,通过study_num存储每个按键编码在txt文件里的字节长度</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/36b2e705469b3e177a6858169c2f08a2.png"></p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/152f100007f7221baf962d396e4ed690.png"></p>    <p>5、调用通信进程发送数据,如果选择的是自学习红外协议,通过打开存储文件根据study_order和study_num找到相应的按键编码,再进行发送。</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/b81b46f149c2bb1847695edf8bca7a57.png"></p>    <p>(4)BluetoothClientConnThread.java建立一个蓝牙设备连接进程,主要实现蓝牙设备的连接,建立通信信道。</p>    <p><img src="https://simg.open-open.com/show/5a4654d85f552f997f4880bbae4ce9ed.png"></p>    <p>(5)BluetoothCommunThread.java是通信进程,用于具体数据的接收和发送</p>    <p>在这个文件中存储了NEC协议的编码,当选择的是NEC编码时,会直接从该文件中读取编码命令。</p>    <p>1、NEC协议编码的设定</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/2696ab7fced4ff322d0f69cb4d694302.png"></p>    <p>2、Converse函数,将0、1二进制数转化为本次项目需要的显示电平时长的编码。</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/cc1502911178c28d81ebc6c2308c2c93.png"></p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/bcbc7aa14413674c33d0ad20bbba94e5.png"></p>    <p>3、实现数据的接收</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/7766ade18f7dab40b09fa813cdd2d35a.png"></p>    <p>4、实现红外编码的发送</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/63a2d4c69cc3377f1c300e84031b96f8.png"></p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/5b5ca1a300364fe42a84decb41bdb309.png"></p>    <p>好了,基本就这些了,这些都是之前写的工程了,图片也是之前写傻瓜书时截的,若有什么不明白的可以把工程下下来看</p>    <p> </p>    <p>来自:http://www.jianshu.com/p/d6493cb555f4</p>    <p> </p>