蓝牙通讯模块:
该模块使用两个Service(服务器段Serivce和客户端Service)来分别控制服务器端和客户端的蓝牙通讯。
每个Service控制着若干线程
Service与其下属线程之间使用Handler进行通讯
Service与Activity之间的通讯使用Broadcast(广播)进行通讯
需要传递的数据通过一个自定义数据实体来进行传递
结构图:
通过Broadcast进行通讯的Action介绍:
服务器端Action列表:(同公用Action列表)
服务器与客户端公用Action列表:
ACTION_STOP_SERVICE:关闭后台服务。当程序退出或需要停止蓝牙服务时发送此广播
ACTION_DATA_TO_SERVICE:数据传送至后台Service。包含一个key为DATA的参数,该参数类型为实现了Serializable接口的类(该类为用户自己编写的数据实体类)。
ACTION_CONNECT_SUCCESS:连接成功。从后台Service发送出连接成功建立的广播。
ACTION_CONNECT_ERROR:连接错误。从后台Serivce发送出连接发生错误的广播。
ACTION_DATA_TO_GAME:从后台Service传送出数据。包含一个key为DATA的参数,该参数类型为实现了Serializable接口的类(该类为用户自己编写的数据实体类)。
客户端Action列表:
ACTION_START_DISCOVERY:开启蓝牙搜索。命令后台Service开始蓝牙搜索。
ACTION_SELECTED_DEVICE:选中的蓝牙设备。包含一个key为DEVICE的参数,该参数类型为BluetoothDevice(蓝牙设备类)。
用户需要从搜索到的蓝牙设备中选择服务器设备,选择设备后发送Broadcast,告知后台Service选择的蓝牙设备。
ACTION_FOUND_DEVICE:发现设备。后台Service进行搜索蓝牙设备过程中,每发现一个设备便会发送该Broadcast。
ACTION_NOT_FOUND_SERVER:未发现服务器设备。后台Service通过搜索并未发现可连接的蓝牙设备,发送此Broadcast。
关于Android蓝牙传输速率:
蓝牙1.2传输速度为721Kbps,蓝牙2.0最高速度为2.1Mbps,蓝牙2.1传输速率可达2~3Mbps,
当然这只是理论数据,实际应用中由于设备间的兼容性以及其他因素影响很难实现,一般在
100KB左右.蓝牙3.0和4.0的最高传输速度是24Mbps.
安卓的蓝牙为什么与苹果手机不能连接呢?
关于这个智障般的问题,因为手机系统数据的独立性,不同系统无法连接!