蓝牙发现与连接

Kev*_*hou 2 android bluetooth

因此,为了获得不断更新的 RSSI 值,我不得不求助于这种低效的方法。我曾尝试使用 bluecove 2.1.1,但它给了我一些库错误和运行时错误,我不想再浪费时间处理这些错误了。开发人员指南将发现定义为扫描附近可发现设备的过程。

正在调用方法 Intent.getShortExtra(BluetoothDevice.EXTRA_RSSI, Short.MIN_VALUE); 这段时间可能吗?

还是必须先让两台设备建立连接才能使上述方法有意义?

也就是说,对于我的 poll() 方法,我是否可以先将有问题的设备的 MAC 地址保存到某个变量 mac_addr,将 RSSI 值保存到某个变量 my_rssi,然后每次调用 poll() 时,都会运行新的扫描, mac 地址与 mac_addr 匹配的设备是目标并更新 my_rssi 字段?

Jur*_*uri 6

完全正确或更好的是,您只能在设备发现扫描期间获取 RSSI 值。我的硕士研究论文就是关于这个主题的。这是因为活动连接期间的 RSSI 值不可靠(由于 RSSI 值本身的性质),因此 Google Android 工程师没有通过 API 公开它。

这样做的好处:

  • 您不需要活动连接,因此不需要配对
  • 由于不涉及“微微网”,您扫描的设备数量可能是无限的

缺点

  • 其他蓝牙设备需要可发现(这是一个问题,特别是如果您想找到其他具有最大可发现间隔的 Android 设备)
  • 连续设备发现扫描是一个繁重的过程 ->消耗大量电池

然而,不断执行设备发现的问题在于它会在移动设备上消耗大量电池......