```
设备初始化
配置HC-05为从机模式:
```cpp
QBluetoothSerialPort *port = new QBluetoothSerialPort("/dev/ttyUSB0"); // 根据实际情况修改
port->setDeviceAddress("00:11:22:33:44:55"); // 设备地址需与HC-05一致
port->setBaudRate(9600);
port->open(QBluetoothSerialPort::ReadWrite);
port->setParity(QBluetoothSerialPort::NoParity);
port->setStopBits(QBluetoothSerialPort::OneStop);
port->setFlowControl(QBluetoothSerialPort::NoFlowControl);
```
获取本地设备信息:
```cpp
QBluetoothLocalDevice *localDevice = QBluetoothLocalDevice::defaultDevice();
QString deviceAddress = localDevice->address();
quint16 deviceClass = localDevice->classId();
```
三、蓝牙核心功能实现
设备扫描与连接
创建扫描代理:
```cpp
QBluetoothDeviceDiscoveryAgent *agent = new QBluetoothDeviceDiscoveryAgent();
agent->startDiscovery();
```
连接设备:
```cpp
QBluetoothDevice *targetDevice = agent->discoverDevice(address);
QBluetoothSocket *socket = targetDevice->createRfcommSocketToServiceRecord(UUID);
socket->connectToServiceRecord();
socket->connectFinished.connect([](bool success) {
if (success) {
socket->startTransmission();
} else {
qDebug() << "Connection failed!";
}
});
```
数据传输
通过套接字读写数据:
```cpp
socket->write(QByteArray("Hello, Bluetooth!"));
socket->readAll();
```
处理GATT特性(适用于BLE):
```cpp
QBluetoothService *service = socket->service(QBluetoothService::UUID);
QBluetoothCharacteristic *characteristic = service->characteristic(UUID);
characteristic->setValue(QByteArray("Data"), QBluetoothCharacteristic::Write);
```
状态管理
监测蓝牙状态:
```cpp
QObject::connect(agent, &QBluetoothDeviceDiscoveryAgent::discoveredDevice, [](QBluetoothDevice *device) {
qDebug() << "Discovered device:" << device->name() << device->address();
});
```
断开连接与资源释放:
```cpp
socket->disconnect();
socket->deleteLater();
```
四、注意事项
权限配置
在AndroidManifest.xml中添加蓝牙权限:
```xml
```
运行时请求权限(适用于Android 6.0及以上)。
错误处理
添加异常处理机制,例如:
```cpp
socket->errorChanged.connect([](QBluetoothSocket::Error error) {
qDebug() << "Socket error:" << error;
});
```
资源管理
使用完蓝牙设备后及时断开连接,避免电池耗尽:
```cpp
localDevice->setHostMode(QBluetoothLocalDevice::HostPoweredOff);
```
五、进阶功能(可选)
低功耗