Android上的后台重新连接参数
我正试图弄清楚Android在BLE的后台到底在做什么。例如,如果我发出一个connectGatt(),并将autoConnect设置为true,那么Android多久会查找一次?我的应用程序在前台时如何?背景?有没有办法操纵这个参数 到目前为止,我发现的是: 然而,它们被分为“扫描模式”和“扫描模式批处理”,但我不知道它们是何时使用的。我也不知道哪种扫描模式用于背景重新连接 我发现最接近实际信息的是: 这意味着应用程序在后台进行的所有扫描都是在低功耗下完成的。但这包括重新连接扫描吗?它是哪种低功耗模式?Android上的后台重新连接参数,android,bluetooth-lowenergy,android-bluetooth,Android,Bluetooth Lowenergy,Android Bluetooth,我正试图弄清楚Android在BLE的后台到底在做什么。例如,如果我发出一个connectGatt(),并将autoConnect设置为true,那么Android多久会查找一次?我的应用程序在前台时如何?背景?有没有办法操纵这个参数 到目前为止,我发现的是: 然而,它们被分为“扫描模式”和“扫描模式批处理”,但我不知道它们是何时使用的。我也不知道哪种扫描模式用于背景重新连接 我发现最接近实际信息的是: 这意味着应用程序在后台进行的所有扫描都是在低功耗下完成的。但这包括重新连接扫描吗?它是哪
SCAN\u MODE\u LOW\u POWER\u INTERVAL\u MS
仅为5秒,而SCAN\u MODE\u BATCH\u LOW\u POWER\u INTERVAL\u MS
为150秒!!这是一个很大的区别,并且会影响应用程序尝试重新连接到设备
不管怎样,我试着通读代码,但无法准确地理解到底发生了什么。任何关于这项工作原理的见解都会有所帮助
我问这个问题的原因是,有时我在重新连接设备时遇到问题,但是设备每次只会唤醒30秒来做广告。如果安卓系统的扫描间隔是150秒,那么它们很容易就会以这种方式相互错过。感谢您的帮助,以及重新连接可能不成功的其他原因(注意-这在iOS中100%正常工作)。扫描管理器代码不控制启动连接的扫描参数 控制后台连接的代码位于中。它引用了以下内容:
/* default scan paramter used in reduced power cycle (background scanning) */
#ifndef BTM_BLE_SCAN_SLOW_INT_1
#define BTM_BLE_SCAN_SLOW_INT_1 2048 /* 1.28 s = 2048 *0.625 */
#endif
#ifndef BTM_BLE_SCAN_SLOW_WIN_1
#define BTM_BLE_SCAN_SLOW_WIN_1 48 /* 30 ms = 48 *0.625 */
#endif
因此,扫描窗口为30毫秒,间隔为1.28秒。如果您的广告时间间隔为20毫秒(在添加0到10毫秒的随机延迟之前),这意味着连接时间不应超过1.28秒(除非控制器使用另一个计划)。非常感谢!