android蓝牙开发Demo
基于menghnhhuan源码基础的android蓝牙通信的Demo
项目职责: 1.BluetoothActivity 用途:装载存放Device与Chat碎片的容器。 1)定义当前application的状态,默认无状态 2)加载Device与Chat碎片 2.DeviceFragment 用途:显示已配对与扫描到的Device 1)注册蓝牙扫描的接收广播 2)让用户打开蓝牙 3)显示已经配对的蓝牙设备 4)接收到扫描广播,显示扫描到的蓝牙设备 5)"搜索设备"按钮点击的时候去开启或关闭扫描蓝牙设备的服务(系统服务) 6)"启动服务端"按钮点击的时候,将当前application的状态设置成SERVER状态,并切换UI到ChatFragment 7)连接扫描到的设备,条目点击的时候,在对话框中去将当前application的状态设置成CLIENT,将当前条目对应的address记录下来, 并切换到UI到ChatFragment 3.ChatFragment 用途:显示连接状态,以及聊天内容(没有连接,就不能聊天) 1)获取默认的蓝牙适配器 2)"发送"按钮点击的时候,去将编辑框输入的内容,写到socket的输出流里面,并且,ListView添加一个Item显示当前内容。 当然,如果连接还没有建立,就不发生消息,也不增加Item 3)"断开"按钮点击的时候,就关闭已经连接的socket,中断对应的线程。将application状态重置到无状态。将服务端是否开启状态设置成否。 4)** 在当前碎片获取到焦点的时候,检测服务端开启状态,如果是开启状态,就不做任何操作,除非是点击事件带来的逻辑;*如果服务端不是开启状态 就去看当前application的状态: 如果application是CLIENT状态,就先判断,有没有拿到服务端的地址,如果没有拿到,就不做什么操作;如果拿到了,就获取服务端 的DEVICE对象,并开启客户端连接的线程,并将服务端开启的状态设置成是。//TODO1 如果application的SERVER状态,就直接开启服务端线程,并将服务端开启状态设置成是。//TODO2 ***TODO1:根据获取的DEVICE对象<是服务端对应的DEVICE>,去创建一个蓝牙socket,同时,让UI显示正在连接服务端..,然后执行 socket连接操作。并且,开启线程去接收数据。//TODO3 如果客户端连接服务端失败,UI显示"连接异常..." ***TODO2:首先通过默认蓝牙适配器去创建一个蓝牙服务端socket,同时UI显示:"等待客户端连接..",然后执行接收操作,在接收到了之后, 让UI显示"客户端已经连接上!可以发送信息。".然后开启线程去接收数据。//TODO3 ***TODO3:根据socket对象,去获得一个InputStream,然后循环读取流中数据,并及时显示到ListView中。 5)在当前碎片被销毁的时候,根据当前的application的状态,中断对应的线程,并且将服务端是否开启状态设置成否,application状态设置成 无状态。
代码后续跟上,未完待续...