建立连接
在Android平台上,与远程蓝牙设备通信的第一步是建立连接。此过程涉及以下步骤:
- 获取目标设备: 首先,需要获取代表目标蓝牙设备的
BluetoothDevice
对象。 - 创建蓝牙套接字: 使用
BluetoothDevice
对象的createRfcommSocketToServiceRecord(UUID)
方法创建一个BluetoothSocket
。UUID是用于标识服务的唯一标识符,确保客户端和服务器使用相同的UUID至关重要。 - 发起连接: 调用
BluetoothSocket
的connect()
方法发起连接请求。如果远程设备接受连接,则双方将共享一个RFCOMM信道,connect()
方法将返回。
重要提示:
- 建议在一个独立的线程中调用
connect()
方法,因为它是一个阻塞操作。 - 不要在设备发现过程中发起连接,因为这会降低发现速度并可能导致连接失败。
- 数据传输完成后,务必调用
close()
方法关闭连接,以释放系统资源。
代码示例
private class ConnectThread extends Thread {
private final BluetoothSocket mmSocket;
private final BluetoothDevice mmDevice;
public ConnectThread(BluetoothDevice device) {
// 使用临时对象,因为mmSocket是final类型的
BluetoothSocket tmp = null;
mmDevice = device;
// 获取用于连接目标设备的BluetoothSocket
try {
// MY_UUID是应用程序的UUID字符串,服务器代码也需要使用相同的UUID
tmp = device.createRfcommSocketToServiceRecord(MY_UUID);
} catch (IOException e) {
// 处理异常
}
mmSocket = tmp;
}
public void run() {
// 连接成功后,取消设备发现
// mBluetoothAdapter.cancelDiscovery();
try {
// 发起连接
mmSocket.connect();
} catch (IOException connectException) {
// 处理连接异常
try {
mmSocket.close();
} catch (IOException closeException) {
// 处理关闭异常
}
return;
}
// 连接成功,开始数据传输
// ...
}
// 关闭连接
public void cancel() {
try {
mmSocket.close();
} catch (IOException e) {
// 处理关闭异常
}
}
}
暂无评论