gpt4 book ai didi

android - 了解 Android BLE ScanSettings 参数

转载 作者:行者123 更新时间:2023-12-02 11:21:26 40 4
gpt4 key购买 nike

ScanSettings 周围的文档非常简洁,我很难提出最佳配置。
我的要求要求我应该尽快报告一个符合我的过滤条件(根据服务 UUID 过滤)的新广告数据包。重复的广告包对我没有用。当外围设备将在其一侧注册一个事件时,广告数据包将发生变化,因此广告数据包是我检测变化并采取相应行动的机会。我还需要知道外围设备何时停止广告(关闭电源或不再在范围内)。
我尝试设置回调类型,如下所示:

setCallbackType(ScanSettings.CALLBACK_TYPE_FIRST_MATCH | ScanSettings.CALLBACK_TYPE_MATCH_LOST)
此参数的文档说:

int CALLBACK_TYPE_ALL_MATCHES

Trigger a callback for every Bluetooth advertisement found that matches the filter criteria. If no filter is active, all advertisement packets are reported.

int CALLBACK_TYPE_FIRST_MATCH

A result callback is only triggered for the first advertisement packet received that matches the filter criteria.

int CALLBACK_TYPE_MATCH_LOST

Receive a callback when advertisements are no longer received from a device that has been previously reported by a first match callback.


我希望在外围设备可用时得到通知,然后在外围设备丢失时得到通知。但是,这不会触发任何扫描结果,至少不会在我的 Pixel 2 上。所以我只是切换到使用 CALLBACK_TYPE_ALL_MATCHES现在我得到了所有的广告包。如果我想从同一个外围设备获取更新的数据包,这可能就是我想要的。
我看了 setMatchMode参数,这似乎只根据信号强度配置回调率:

int MATCH_MODE_AGGRESSIVE

In Aggressive mode, hw will determine a match sooner even with feeble signal strength and few number of sightings/match in a duration.

int MATCH_MODE_STICKY

For sticky mode, higher threshold of signal strength and sightings is required before reporting by hw

setNumOfMatches声称可以处理每个过滤器的广告数量,但所有记录的参数似乎都没有什么不同,我仍然从同一个外围设备获得了一系列没有变化的数据包,无论参数如何,似乎都以大致相同的速率。
为了满足我需要确定外围设备是否停止广告(关闭或不在范围内)的部分要求,我想出了来自外围设备的最后一次看到数据包的时间戳,并确定外围设备是否丢失'在 x 秒内看不到一个数据包。这是必要的,因为 CALLBACK_TYPE_FIRST_MATCHCALLBACK_TYPE_MATCH_LOST似乎根本不起作用。
不幸的是,这意味着我会收到大量类似的数据包,从而触发我现在必须处理的代码中的链式 react 。
如何配置扫描以便仅在广告数据包更改或外围设备停止广告时收到通知?我在这里遗漏了什么,或者那是不可能的。

最佳答案

设置代码如下:

  new ScanSettings.Builder ()
.setScanMode (ScanSettings.SCAN_MODE_BALANCED)
.setCallbackType (ScanSettings.CALLBACK_TYPE_ALL_MATCHES)
.build (),...
此设置适用于所有设备。但是每个智能手机都会给你一个不同的错误,这会导致困惑。

关于android - 了解 Android BLE ScanSettings 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50164213/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com