Android中的蓝牙LE设备的绑定(即“配对设备”)的最大数量是多少?

时间:2018-10-29 17:32:11

标签: android ios bluetooth

我想在这个问题上寻求的信息与这里寻求的信息相似(但不相同)...

How many devices we can pair via Bluetooth of BLE to Android?

...所以让我们用另一种方式重新询问:

比方说,我们有一个用例,有人用手机可能希望通过使用配对安全地(使用行业标准安全机制)连接到Bluetooth LE设备。发生配对时,绑定信息存储在手机中-->设置-->无线-->蓝牙-->配对设备窗口(对话框)。

这些“配对设备”将保留在此列表中,无论是否保持活动连接,对吗?

如果此答案正确,那么在Android OS(或iPhone的iOS)开始开始出现性能问题之前,此列表中可以累积成百上千的先前配对/绑定的设备?

我的理解是... Android操作系统或iPhone操作系统都没有提供编程功能来“清除”旧配对/绑定设备的列表。如果忽略允许手动删除配对设备列表的手机用户,那么他们可能会面临艰巨的任务。

有什么想法吗?在此先感谢--DJ Regan


2018年11月12日更新...今天有新消息:在使用Android对许多BLE配对设备进行性能分析-->我的一个队友在尝试配对后发现其蓝牙无线电变得不可用(如无法使用)到今天的第102台设备。正在进行其他分析。所以...也许这是一个不应该信任iOS或Android的用例? --DJ Regan

3 个答案:

答案 0 :(得分:4)

从资料上看,我认为100是正确的数字,指向可以绑定的最大设备数。在实践中也得到了证明。

 /* The number of security records for peer devices. */
    #ifndef BTM_SEC_MAX_DEVICE_RECORDS
    #define BTM_SEC_MAX_DEVICE_RECORDS  100
    #endif

...

/************************************************************************************
    **  Local type definitions
    ************************************************************************************/
    typedef struct
    {
        uint32_t num_devices;
        bt_bdaddr_t devices[BTM_SEC_MAX_DEVICE_RECORDS];
    } btif_bonded_devices_t;

答案 1 :(得分:2)

根据蓝牙实现,如果有100多个设备记录,分配将失败。

责任人BTM_SEC_MAX_DEVICE_RECORDS被定义为in bt_target.h

/* The number of security records for peer devices. */
#ifndef BTM_SEC_MAX_DEVICE_RECORDS
#define BTM_SEC_MAX_DEVICE_RECORDS  100
#endif

然后在inside btm_dev.c中使用它,特别是在BTM_SecAddDevice中,它在100次配对后返回false:

   /* There is no device record, allocate one.
    * If we can not find an empty spot for this one, let it fail. */
    for (i = 0; i < BTM_SEC_MAX_DEVICE_RECORDS; i++)

答案 2 :(得分:0)

您最多可以通过蓝牙连接8台设备。