上次写了android之蓝牙通信(一)(基础之检测蓝牙、开启蓝牙、扫描附近蓝牙设备)
,大致介绍了开启蓝牙,搜索附近蓝牙设备功能,下面接下来写下搜索到蓝牙设备后进行连接,传递数据的操作,连接蓝牙设备有两种,一种是单向,一种是双向。单向是它发数据,你接受就行;双向是它发数据,你接收,你也发数据,它接收,双向的最佳例子就是蓝牙聊天。单向跟双向的做法差不多,单向只需要做个接收就行,而双向比单向多一个发送功能,具体的差异上一篇说过,双向是即作为服务器也作为客户端,单向是只需要作为客户端就行。
由于项目是做连接蓝牙秤获取蓝牙秤的数据,所以就以单向为例了,双向原理类似,多一个accept()和作为service服务器,具体就不多说了。
废话不多说了,直接上代码,首先,连接设备(很多人写的时候都是直接进行连接,没有先进行配对而是直接连接操作,这种方式不稳定,未配对的直接进行连接不稳定,有时候会很久连不上,所以先进行配对判断,配对过了直接连接,未配对的先进行配对,配对成功后再进行连接):
//配对连接线程
private class ClientThread extends Thread {
@Override
public void run() {
if (bluetoothAdapter.isDiscovering()) {
bluetoothAdapter.cancelDiscovery();
}
try {
if (device.getBondState() == BluetoothDevice.BOND_NONE) { //未配对,就先配对,再连接
Method m = BluetoothDevice.class.getMethod("createBond");