返回

Android BLE 连接与发现服务教程

Android

Android BLE:连接、断开连接和发现服务、特征和符

简介

蓝牙低能耗(BLE)技术在各种行业中变得越来越普遍,因为它提供了低功耗、长距离通信。Android BLE API 允许开发者与 BLE 设备交互,建立强大的应用。

连接 BLE 设备

连接 BLE 设备的第一步是扫描设备。一旦找到要连接的设备,就可以使用 connect() 方法建立连接。该方法返回一个 Future<BluetoothGatt> 对象,用于检查连接状态。

断开 BLE 连接

要断开与 BLE 设备的连接,可以使用 disconnect() 方法。该方法立即断开连接,不会等待任何挂起的操作完成。

发现服务

BLE 设备提供的服务是通过 discoverServices() 方法发现的。该方法返回一个 Future<List<BluetoothGattService>> 对象,用于检索设备提供的服务列表。

特征

服务包含一组特征,这是 BLE 设备可以提供或接收数据的单位。要获取服务的特征列表,可以使用 getCharacteristics() 方法。该方法返回一个 Future<List<BluetoothGattCharacteristic>> 对象,用于检索服务的特征列表。

描述符是提供有关特征的额外信息的元数据。要获取特征的描述符列表,可以使用 getDescriptors() 方法。该方法返回一个 Future<List<BluetoothGattDescriptor>> 对象,用于检索特征的描述符列表。

代码示例

// 扫描 BLE 设备
BluetoothLeScanner scanner = bluetoothAdapter.getBluetoothLeScanner();
scanner.startScan(scanCallback);

// BLE 扫描回调
ScanCallback scanCallback = new ScanCallback() {
    @Override
    public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) {
        // 找到要连接的设备
        if (device.getAddress().equals("00:11:22:33:44:55")) {
            // 连接 BLE 设备
            device.connectGatt(this, false, gattCallback);
        }
    }
};

// BLE 连接回调
BluetoothGattCallback gattCallback = new BluetoothGattCallback() {
    @Override
    public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
        if (newState == BluetoothProfile.STATE_CONNECTED) {
            // 连接成功
            gatt.discoverServices();
        } else if (newState == BluetoothProfile.STATE_DISCONNECTED) {
            // 断开连接
        }
    }

    @Override
    public void onServicesDiscovered(BluetoothGatt gatt, int status) {
        if (status == BluetoothGatt.GATT_SUCCESS) {
            // 服务发现成功
            List<BluetoothGattService> services = gatt.getServices();
            for (BluetoothGattService service : services) {
                // 获取服务的特征列表
                List<BluetoothGattCharacteristic> characteristics = service.getCharacteristics();
                for (BluetoothGattCharacteristic characteristic : characteristics) {
                    // 获取特征的描述符列表
                    List<BluetoothGattDescriptor> descriptors = characteristic.getDescriptors();
                }
            }
        }
    }
};

常见问题解答

1. 如何知道我的 Android 设备是否支持 BLE?

使用 bluetoothAdapter.isEnabled()bluetoothAdapter.isMultipleAdvertisementSupported() 方法检查 BLE 支持。

2. 如何扫描附近的 BLE 设备?

使用 bluetoothLeScanner.startScan() 方法启动扫描。

3. 如何连接到特定的 BLE 设备?

找到设备后,使用 device.connectGatt() 方法建立连接。

4. 如何发现设备提供的服务?

连接后,使用 gatt.discoverServices() 方法发现服务。

5. 如何获取特征和描述符的信息?

服务发现完成后,使用 service.getCharacteristics()characteristic.getDescriptors() 方法获取特征和描述符的信息。

结论

通过使用 Android BLE API,开发者可以与 BLE 设备交互,建立强大的应用。通过连接、断开连接和发现服务、特征和描述符,开发者可以开发出各种 BLE 应用,从健身追踪器到医疗设备。