见BluetoothDevice.connectGatt()
。autoConnect
的描述是
布尔值:是直接连接到远程设备(false),还是在远程设备可用时立即自动连接(true)。
这到底是干什么用的?如果是false
,我想它必须在短时间内扫描特定的设备,如果找不到就放弃。但是如果是true
,它会做什么呢?它会立即开始扫描吗?它会永远扫描吗?它定期扫描吗?如果断开连接,它会自动重新连接吗?谷歌什么时候才能开始编写像样的文档?
编辑:我已经将参数跟踪到bt_gatt_client.h
/** 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应该如何工作仍然没有真正的答案。
发布于 2018-05-10 13:10:40
有关堆栈溢出的更多详细信息:autoConnect在connectGatt中的正确标志是哪个?
在直接连接和自动连接之间有一些未经记录的区别: 直接连接是用30秒超时的连接尝试。当直接连接正在进行时,它将挂起所有当前的自动连接。如果已经有直接连接挂起,则不会立即执行最后一个直接连接,而是在前面的连接完成后排队并启动。 有了自动连接,您可以同时拥有多个挂起的连接,并且它们永远不会超时(除非显式中止,或者直到蓝牙关闭)。 如果连接是通过自动连接建立的,则Android将在远程设备断开连接时自动尝试重新连接,直到手动调用disconnect()或close()。一旦通过直接连接建立的连接断开,就不会尝试重新连接到远程设备。 与自动连接相比,直接连接具有不同的扫描间隔和扫描窗口,这意味着它将花费更多的无线电时间来监听远程设备的可连接广告,即连接建立得更快。
https://stackoverflow.com/questions/37965337
复制相似问题