0

我有一个使用蓝牙信标的应用程序。当应用程序处于打盹模式时,来自蓝牙信标的接近通知不会唤醒手机。只有当我解锁手机时才会发送通知。对于已被杀死的前台或应用程序,此问题是相同的。

4

1 回答 1

2

从 Android 6.0 开始,打盹模式会阻止任何蓝牙扫描回调或其他事件,包括信标检测。 我在 Google I/O 2015 的一次会议上与 Android 蓝牙工程师讨论了这个问题。他们的立场是,因为感应到的运动会退出打盹模式,所以这不是问题,因为手机在静止时通常无法发现新的蓝牙信标,并且因此大概在同一个地方。

虽然这对于大多数用例都是正确的,但也有一些例外:(1) 在直线路径上单向行驶的火车或其他车辆上,加速度计不会检测到运动并且手机可能会进入打瞌睡状态,尽管处于运动并可能看到新的信标。(2) 在某些用例中,信标广告被构建为动态的,因此它们在同一案例中出现和消失。在这两种情况下,如果 Android 设备处于打盹模式,它们根本无法检测到新的信标广告。

这是一个不幸的限制,您必须简单地设计。

编辑:从 Android 7 开始,有两种打盹模式,重型和轻型。当屏幕关闭但手机不是静止不动时,会启动轻度打盹模式。当屏幕关闭并且设备在一段时间内静止不动时,重度瞌睡模式就会启动。在轻度瞌睡模式下,信标检测正常传送。在重度打瞌睡模式下,它们不应该是根据谷歌的。但是,在某些设备上它们会这样做。我看到它们在运行前台服务的 Android 8.0 的三星 Galaxy S8 上以重度瞌睡模式交付。

于 2018-12-17T00:37:06.450 回答