-3

每当在附近检测到 Eddystone 信标时,我正在开发 Nearby Message API 以在后台启动我的应用程序中的服务。

它工作正常,但我观察到每次我重新启动蓝牙时它都会触发它的 onFound 事件。

但我想在每次我(android 设备)进入信标范围时触发 onFound 事件(蓝牙将始终处于开启模式)。

经过调试,我发现这是因为当我超出我的信标范围时没有触发onLost事件,相反,只有在我关闭蓝牙时才会触发onLost。

所以我的问题是,onLost 事件的预期行为是什么,我在想什么?

提前感谢您的意见。

4

2 回答 2

0

当 Nearby 扫描至少 10 秒无法检测到信标时触发 onLost 回调(根据经验超时,我没有找到任何官方值)。

在前景扫描的情况下情况很容易。扫描始终处于活动状态,并且 Nearby 能够在 10 秒后检测到“丢失的”信标。

在后台扫描的情况下情况会变得复杂。扫描仅在屏幕开启事件上执行,因此 onLost 可以在很久以后触发。

我认为关闭蓝牙会触发附近和之前发现的信标丢失。这就是为什么您在关闭蓝牙时会出现 onLost 的原因。如果您正在使用后台扫描,您将在其他应用程序进行扫描时获得更新。因此,如果您超出信标的范围,等待 10 秒,然后由其他应用程序执行扫描,您应该得到 onLost 回调。

这同样适用于 onFound。

我想它不能解决你的问题,但希望它能回答你的问题......

于 2016-11-03T14:00:04.503 回答
0

来自:https ://developers.google.com/android/reference/com/google/android/gms/nearby/messages/MessageListener

public void onLost (Message message)

当附近不再检测到消息时调用。注意:此回调目前最适用于附加到 BLE 信标的消息。对于其他消息,它可能不会被及时调用,或者根本不会调用。该方法不会被重复调用(除非在丢失的调用之间再次找到消息)。

您应该尝试远离(或关闭)信标,这应该会触发“onLost”,例如关闭蓝牙

于 2016-09-05T21:51:53.150 回答