【问题标题】:Is there a better way to connect to multiple BLE devices in Android?有没有更好的方法可以连接到 Android 中的多个 BLE 设备?
【发布时间】:2014-11-05 10:13:51
【问题描述】:

我正在Android 中开发BLE(蓝牙)。我通过谷歌找到了信息。似乎Android 可以通过使用多个BluetoothGatt 连接到multiple BLE device,如下面的伪代码。

我有多个 BLE 设备。我想我需要先定义多个BluetoothGatt参数。

private BluetoothGatt mBluetoothGattA = null, 
     mBluetoothGattB = null , mBluetoothGattC = null;

第一个 BLE 设备连接。

final BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address_A);
mBluetoothGattA = device.connectGatt(this, false, mGattCallback);

尝试连接第二个 BLE 设备。

final BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address_B);
mBluetoothGattB = device.connectGatt(this, false, mGattCallback);

我说的对吗?如果我连接 6 个 BLE 设备,我应该定义 6 个BluetoothGatt 参数吗?

有连接多个 BLE 设备的智能方法吗?

【问题讨论】:

  • 你能找到任何相同的例子吗?你能指导我如何连接多个BLE设备

标签: android bluetooth-lowenergy


【解决方案1】:

不需要多个BluetoothGattCallback。意外地,我使用相同的 BluetoothGattCallback 连接了两个 BLE 设备并且工作正常。

在 BluetoothGattCallback 中你必须知道发送数据的设备的地址。

例如,您可以使用:

gatt.getDevice().getAddress();

希望有帮助

【讨论】:

    【解决方案2】:

    您将通过为每个设备创建每个 BluetoothGattCallback(现在最多 7 个)来处理每个 BLE 设备。例如:

    private final BluetoothGattCallback oneGattcallback = new BluetoothGattCallback() ... 
    

    private final BluetoothGattCallback twoGattcallback = new BluetoothGattCallback() ...

    然后尝试连接 mBluetoothGattA = deviceA.connectGatt(this, false, oneGattcallback );mBluetoothGattB = deviceB.connectGatt(this, false, twoGattcallback ); 就是这样。您会发现很多示例处理一个连接,而只是为多个连接开发更多示例。

    【讨论】:

    • 添加多个回调不是解决方案。 Android BLE API 的设计方式是单个BluetoothGattCallback 适用于多个连接。您可以在BluetoothGattCallback 方法中根据它们的地址处理不同的设备。
    猜你喜欢
    • 2023-04-03
    • 1970-01-01
    • 2016-05-25
    • 2022-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-07
    相关资源
    最近更新 更多