我想在这个问题上寻求的信息与这里寻求的信息相似(但不相同)...
“ 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
答案 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台设备。