微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android BLE – 一次连接多个设备

我正在开发一个连接到BLE设备并读取Gatt服务和Gatt特性的Android应用程序.我使用Android开发站点的BluetoothLeGatt示例项目作为参考.

到目前为止,我能够以编程方式连接到设备(我注意到我的设备地址能够执行此操作)并通过记录UUID过滤掉我想要读取的特定Gatt服务以及服务的特定特征服务和特征.当我的BLE设备向我的Android应用程序发送消息时,Google提供的示例也会更新.总的来说,我没有遇到任何问题.

但是,在GATT上进一步阅读后,我发现可以使用单个Android应用程序(作为主OR客户端 – 连接到多个BLE设备(所有从属设备或服务器 – 发送数据的设备))接收所述数据).所以我试图做的是拥有2个BLE设备(不同的地址),记下他们的地址,然后我的应用程序尝试连接到它们,一旦应用程序看到这两个地址启动并运行.

代码中,当我看到我的2个BLE设备时,我会调用函数

private void connectToDevice(){

    mDeviceName = deviceList.get(currentIndex).getName();
    mDeviceAddress = deviceList.get(currentIndex).getAddress();

    Log.e(TAG,"connecting to device name = " + mDeviceName);

    mBluetoothLeService.connect(mDeviceAddress);
}

其中currentIndex最初设置为零.然后,一旦我成功连接,我会:

private final broadcastReceiver mGattUpdateReceiver = new broadcastReceiver() {
    @Override
    public void onReceive(Context context,Intent intent) {
        final String action = intent.getAction();
        if (BluetoothLeService.ACTION_GATT_CONNECTED.equals(action)) {
            Log.e(TAG,"connected");
            mConnected = true;

            if(currentIndex < deviceList.size()-1) currentIndex ++;
            connectToDevice();

        } 
    }
};

我在哪里检查我的设备列表中是否仍有设备连接,如果是,请递增我的计数器然后连接,直到我耗尽列表中的所有内容.

但是,我似乎完全没有使用这种方法.

请注意,我的设备之间无法切换连接(循环).当我拥有大量设备时,这将是一个问题,重要的是让他们的消息实时无延迟.这就是说,我必须有一个与我的设备的实时连接.

有没有人试图连接到Android中的多个BLE设备?我不确定如何继续这个.

最佳答案
实际上,可以从Android设备连接到多个外围设备.但是,它会使您的代码更加复杂,因为您需要管理每个连接和响应.

对于每个连接,你必须使用callbacks来实现BluetoothGatt.我在几个月前通过虚拟测试测试了它,正如我所说,它运行良好,我能够连接到不同的外围设备.但是,如果链接许多命令,似乎在this thread中描述了一些重叠问题.

原文地址:https://www.jb51.cc/android/429942.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐