见BluetoothDevice.connectGatt()
。 autoConnect
的说明是
布尔值:是否直接连接到远程设备(false)或 一旦远程设备变为自动连接 可用(真实)。
这到底是做什么的?如果是false
我想它必须在短时间内扫描特定设备,如果找不到则放弃。但如果它是true
它做了什么?它是否立即开始扫描?它会永远扫描吗?它会定期扫描吗?如果它断开连接,它会自动重新连接吗? Google何时开始撰写体面的文档?
修改:我已将参数追踪到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);
而search for is_direct
会产生一些有趣的结果。
这是一个稍长的解释,但它仍然没有回答任何问题。
autoConnect参数确定是否主动连接 远程设备,或者更确切地说是被动扫描和完成连接 当远程设备在范围/可用时。一般来说,第一次 与设备的连接应该是直接的(autoConnect设置为false)和 应使用以下方法调用与已知设备的后续连接 autoConnect参数设置为true。
我还发现这个definition of the Android 5 Bluetooth HCI requirements包含许多有用的细节,但仍然没有关于autoconnect应该如何工作的真实答案。
答案 0 :(得分:0)
有关堆栈溢出的更多详细信息: Which correct flag of autoConnect in connectGatt of BLE?
直接和自动之间存在一些未记录的差异 连接:
直接连接是30秒超时的连接尝试。它 将在直接连接进入时暂停所有当前的自动连接 进展。如果已有直接连接挂起,则为最后一个 直接连接不会立即执行,而是排队 完成并在前一个完成时开始。
使用自动连接,您可以在此处拥有多个待处理的连接 同一时间他们永远不会超时(直到明确中止或 直到蓝牙关闭。)
如果通过自动连接建立连接,Android 它会自动尝试重新连接到远程设备 断开连接,直到您手动调用disconnect()或close()。一旦 通过直接连接断开建立的连接,没有尝试 用于重新连接到远程设备。
直接连接在a处具有不同的扫描间隔和扫描窗口 比自动连接更高的职责,这意味着它将投入更多的无线电 是时候听远程设备的可连接广告了 即连接将更快建立。