首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android的蓝牙` `autoConnect`‘参数到底是做什么的?

Android的蓝牙` `autoConnect`‘参数到底是做什么的?
EN

Stack Overflow用户
提问于 2016-06-22 10:29:10
回答 1查看 5.2K关注 0票数 5

BluetoothDevice.connectGatt()autoConnect的描述是

布尔值:是直接连接到远程设备(false),还是在远程设备可用时立即自动连接(true)。

这到底是干什么用的?如果是false,我想它必须在短时间内扫描特定的设备,如果找不到就放弃。但是如果是true,它会做什么呢?它会立即开始扫描吗?它会永远扫描吗?它定期扫描吗?如果断开连接,它会自动重新连接吗?谷歌什么时候才能开始编写像样的文档?

编辑:我已经将参数跟踪到bt_gatt_client.h

代码语言:javascript
运行
复制
/** Create a connection to a remote LE or dual-mode device */
bt_status_t (*connect)(int server_if, const bt_bdaddr_t *bd_addr,
                       bool is_direct, int transport);

一个is_direct发现了一些有趣的结果。

这是一个稍长一点的解释,但仍然没有回答任何问题。

autoConnect参数决定是否主动连接到远程设备,或者在远程设备处于范围/可用时被动地扫描和完成连接。通常,与设备的第一个连接应该是直接的(autoConnect设置为false),然后调用到已知设备的连接,并将autoConnect参数设置为true。

我还找到了这个Android 5蓝牙HCI要求的定义,它包含了许多有用的细节,但对于autoconnect应该如何工作仍然没有真正的答案。

EN

回答 1

Stack Overflow用户

发布于 2018-05-10 13:10:40

有关堆栈溢出的更多详细信息:autoConnect在connectGatt中的正确标志是哪个?

在直接连接和自动连接之间有一些未经记录的区别: 直接连接是用30秒超时的连接尝试。当直接连接正在进行时,它将挂起所有当前的自动连接。如果已经有直接连接挂起,则不会立即执行最后一个直接连接,而是在前面的连接完成后排队并启动。 有了自动连接,您可以同时拥有多个挂起的连接,并且它们永远不会超时(除非显式中止,或者直到蓝牙关闭)。 如果连接是通过自动连接建立的,则Android将在远程设备断开连接时自动尝试重新连接,直到手动调用disconnect()或close()。一旦通过直接连接建立的连接断开,就不会尝试重新连接到远程设备。 与自动连接相比,直接连接具有不同的扫描间隔和扫描窗口,这意味着它将花费更多的无线电时间来监听远程设备的可连接广告,即连接建立得更快。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37965337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档