实现一个包含发现和连接到 BLE 设备、发送和接收数据并验证收到数据的 Android BLE 应用程序,可以使用以下示例代码:
public class BleCallback extends BluetoothGattCallback { @Override public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) { // 处理连接状态更改事件 }
@Override
public void onCharacteristicChanged(BluetoothGatt gatt,
BluetoothGattCharacteristic characteristic) {
// 处理数据接收事件
}
}
private BluetoothAdapter mBluetoothAdapter; private BleCallback mBleCallback; private BluetoothGatt mGatt;
// 初始化 BLE 适配器和回调 mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); mBleCallback = new BleCallback();
// 开始扫描 mBluetoothAdapter.startLeScan(new UUID[]{UUID.fromString("0000180D-0000-1000-8000-00805F9B34FB")}, new BluetoothAdapter.LeScanCallback() { @Override public void onLeScan(final BluetoothDevice device, final int rssi, final byte[] scanRecord) { // 连接到设备 if (device.getName() != null && device.getName().equals("MyDevice")) { mGatt = device.connectGatt(context, false, mBleCallback); } } });
// 获取要发送的数据 byte[] dataToSend = "Hello, BLE world!".getBytes(Charset.forName("UTF-8"));
// 获取支持写入的特征 BluetoothGattCharacteristic characteristic = mGatt.getService(UUID.fromString("0000180D-0000-1000-8000-00805F9B34FB")) .getCharacteristic(UUID.fromString("00002A37-0000-1000-8000-00805F9B34FB"));
// 写入数据 characteristic.setValue(dataToSend); boolean success = mGatt.writeCharacteristic(characteristic);