Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android上的后台重新连接参数_Android_Bluetooth Lowenergy_Android Bluetooth - Fatal编程技术网

Android上的后台重新连接参数

Android上的后台重新连接参数,android,bluetooth-lowenergy,android-bluetooth,Android,Bluetooth Lowenergy,Android Bluetooth,我正试图弄清楚Android在BLE的后台到底在做什么。例如,如果我发出一个connectGatt(),并将autoConnect设置为true,那么Android多久会查找一次?我的应用程序在前台时如何?背景?有没有办法操纵这个参数 到目前为止,我发现的是: 然而,它们被分为“扫描模式”和“扫描模式批处理”,但我不知道它们是何时使用的。我也不知道哪种扫描模式用于背景重新连接 我发现最接近实际信息的是: 这意味着应用程序在后台进行的所有扫描都是在低功耗下完成的。但这包括重新连接扫描吗?它是哪

我正试图弄清楚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秒(除非控制器使用另一个计划)。

非常感谢!