实现安卓蓝牙2.0模块的通信功能
事先说明:
安卓蓝牙2.0的开发和BLE4.0的开发完全是不一样的,不过很多设备都采用双模蓝牙,所以掌握2.0也是很有必要的
安卓蓝牙需要手动申请定位权限,可参考我的博客点击打开链接
蓝牙连接过程:
1、查询用户是否开启蓝牙。
2、搜索附近的可用的蓝牙。
3、进行蓝牙配对。
4、进行蓝牙连接。
5、获取输入流和输出流。
6、发送消息。
蓝牙开发思路:
蓝牙从连接到通信整个过程都是通过接收和发送广播进行的,下面是蓝牙进行特定操作时发出来的广播图,晒上我自己画的美图
蓝牙广播内容:
ACTION_STATE_CHANGED 当你蓝牙开启或者关闭的时候发送
ACTION_FOUND 当你匹配到附近蓝牙设备时发送
ACTION_DISCOVERY_STARTED 当你开始搜索附近蓝牙设备时发送
ACTION_DISCOVERY_FINISHED 当你结束搜索附近蓝牙设备时发送
ACTION_BOND_STATE_CHANGED 当你蓝牙设备匹配状态发生变化时发送
实现需要的权限:
由于安卓4.x以上的版本使用蓝牙,需要开启定位权限才能搜索到附近的蓝牙设备
这里使用俩手机,实现蓝牙之间的通信,下面是Demo的效果图
(一)服务端
实现思路:
1、拿到本地蓝牙设备。
2、蓝牙之间的通讯需要一个唯一识别UUID来匹配正确的设备,使用UUID获取蓝牙的通讯Socket。
3、开启获取数据的线程
(二)客户端
实现思路:
1、检查是否开启蓝牙。
2、注册一系列蓝牙的广播。
3、由于蓝牙每经过一个阶段都会发送一个广播,根据广播来实现对应的方法。
4、蓝牙配对->蓝牙连接->发送消息(UUID必须相同)奥斯卡
其实客户端的操作就是上面那张思路图,根据里面的步骤进行就可以完成
① 检查蓝牙
② 注册广播
③ 搜索附近设备
④ 获取搜索到设备的通知
⑤ 进行连接
⑥ 读取数据
⑦ 发送数据
蓝牙2.0比较简单,大家可以通过源码进行理解
源码下载:工具是Android Studio2.1 (建议使用Import Project导入)