【问题标题】:Bluetooth Discovery vs Connection蓝牙发现与连接
【发布时间】:2011-07-26 13:39:55
【问题描述】:

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

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

或者上述方法必须两个设备先建立连接才有意义?

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

【问题讨论】:

    标签: android bluetooth


    【解决方案1】:

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

    这样做的好处:

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

    缺点

    • 需要可发现其他蓝牙设备(这是一个问题,尤其是如果您想查找具有最大可发现间隔的其他 Android 设备)
    • 持续的设备发现扫描是一个繁重的过程 -> costs a lot of battery

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

    【讨论】:

    • 非常感谢 Juri!我花了数周时间试图找到并实施一种有效的方法来实现这一目标,但最终我放弃了。至少对于我在这所本地大学的 Android Deving 的小步骤来说,低效率至少比没有功能要好。再次感谢。
    • 你想达到什么样的目标?
    • 基本上它会给出附近蓝牙设备的相对距离,在一定的阈值距离处播放警报。所以我已经设置好了所有东西,UI、按钮、小部件等,播放警报功能、扫描功能、连接等。只是最后一个轮询 RSSI 值还有待处理。我认为总体上给我的项目有限制(必须在 ANDROID 上使用蓝牙)在最后一步中存在缺陷。尽管如此,我打算至少有一些功能,无论多么不准确和能源效率低,为了完成而工作。
    • 一个“老板来了”——基本上是警报系统;)
    • 我必须在我的论文中搜索解释,但非正式地说,你已经给出了解释:在活动连接期间,蓝牙应用动态电源控制来节省电池寿命。每个设备都有一个所谓的 GRPR(黄金接收器功率范围);根据 RSSI 值是高于还是低于该范围的最小值/最大值,传输功率会增加/减少。因此,这会影响 RSSI 值,这意味着在活动连接期间,对于相同的距离,您可能会获得不同的 RSSI 值。
    猜你喜欢
    • 2023-01-11
    • 1970-01-01
    • 2012-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多