如何知道BLE设备当前是否已连接

6

有没有像device.isConnected()这样的方法可以知道Android BLE设备的当前状态?我知道我需要实现类似于从GattclientCallBack类的接口来知道设备是否连接,但我没有找到类似的方法。此外,该方法

 mBluetoothGatt.getConnectionState(device);

返回一个整数。那么我如何知道设备是否已连接?

1个回答

10
getConnectionState 返回的 int 值为 0、1、2 或 3,分别对应于 STATE_DISCONNECTEDSTATE_CONNECTINGSTATE_CONNECTEDSTATE_DISCONNECTING。详见文档。请注意,此方法仅适用于 API 级别 18 及以上。 但是,该方法的文档包含以下警告:

不支持 - 请使用带有 GATT 参数的 getConnectedDevices(int)

这指的是方法 BluetoothManager.getConnectedDevices。要传递的常量值为BluetoothProfile.GATT。同样,该方法仅适用于 API 级别 18 及以上。看起来,该方法非常适合您的用例。

谢谢 :) 。我曾经一直想知道为什么当我的设备连接时,成功返回0,因为我一般的想法是0可能是失败 :) 我忘记点击不同的设备状态。所以这意味着如果它返回0,则表示设备已连接,是吗? - Pritish
1
返回值2对应于已连接。我认为int值根据状态的自然流程进行了分配(即设备开始断开连接(0),然后必须开始连接(1),然后将连接(2),然后稍后将断开连接(3))。 - stkent
我会重新检查和确认,但我认为在GattclientCallback中当设备连接时,状态为0。 - Pritish
如果您正在引用onConnectionStateChange,那么status应该确实为0(表示成功),但是newState应该为2,以表示新连接的设备。 - stkent
1
在 onConnectionStateChange 中,状态为 0,是的。 :) - Pritish
1
是的,你说得完全正确,newstate是2,而status是0 :) - Pritish

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接