一、onConnectionStateChange
连接状态回调方法:onConnectionStateChange
/**
* Callback indicating when GATT client has connected/disconnected to/from a remote
* GATT server.
*
* @param gatt GATT client
* @param status Status of the connect or disconnect operation. {@link
* BluetoothGatt#GATT_SUCCESS} if the operation succeeds.
* @param newState Returns the new connection state. Can be one of {@link
* BluetoothProfile#STATE_DISCONNECTED} or {@link BluetoothProfile#STATE_CONNECTED}
*/
public void onConnectionStateChange(BluetoothGatt gatt, int status,
int newState) {
}
二、newState
描述蓝牙新的连接状态
newState | Description | 描述 |
---|---|---|
2 | STATE_CONNECTED | 连接成功 |
1 | STATE_CONNECTING | 蓝牙连接中 |
0 | STATE_DISCONNECTED | 连接失败 |
1 | STATE_CONNECTING | 正在断开连接 |
三、status
表示错误信息
BluetoothGatt 层CODE
Status | Status Hex | Description | 描述 |
---|---|---|---|
143 | 0x8f | GATT_CONNECTION_CONGESTED | 远程设备连接拥塞 |
5 | 0x5 | GATT_INSUFFICIENT_AUTHENTICATION | 给定操作的认证不足 |
15 | 0xf | GATT_INSUFFICIENT_ENCRYPTION | 给定操作的加密不足 |
13 | 0xd | GATT_INVALID_ATTRIBUTE_LENGTH | 写操作超过了属性的最大长度 |
7 | 0x7 | GATT_INVALID_OFFSET | 请求读取或写入操作的偏移量无效 |
2 | 0x2 | GATT_READ_NOT_PERMITTED | GATT读取操作不被允许 |
6 | 0x6 | GATT_REQUEST_NOT_SUPPORTED | 给定的请求不受支持 |
3 | 0x3 | GATT_WRITE_NOT_PERMITTED | GATT写入操作是不允许的 |
0 | 0 | GATT_SUCCESS | GATT操作成功完成 |
257 | 0x101 | GATT_FAILURE | GATT操作失败,除上述以外的错误 |
HCI 层的CODE: HCI,即主机控制接口(Host Controller Interface),属于蓝牙协议栈的一部分
Status | Status Hex | Description | Explanation |
---|---|---|---|
0 | 0x00 | BLE_HCI_STATUS_CODE_SUCCESS | Everything ok!😃 |
1 | 0x01 | BLE_HCI_STATUS_CODE_UNKNOWN_BTLE_COMMAND | |
2 | 0x02 | BLE_HCI_STATUS_CODE_UNKNOWN_CONNECTION_IDENTIFIER | |
2 | 0x2 | GATT_READ_NOT_PERMITTED | GATT读取操作不被允许 |
3 | 0x03 | GATT_WRITE_NOT_PERMITTED GATT | 不允许写操作 |
5 | 0x05 | BLE_HCI_AUTHENTICATION_FAILURE | 身份验证失败 |
5 | 0x05 | GATT_INSUFFICIENT_AUTHENTICATION | |
6 | 0x06 | BLE_HCI_STATUS_CODE_PIN_OR_KEY_MISSING | |
6 | 0x06 | GATT_REQUEST_NOT_SUPPORTED | 不支持当前请求 |
7 | 0x07 | BLE_HCI_MEMORY_CAPACITY_EXCEEDED | |
7 | 0x07 | GATT_INVALID_OFFSET | 请求的读取或写入操作的偏移量无效 |
8 | 0x08 | BLE_HCI_CONNECTION_TIMEOUT | 无法在指定时间内建立连接。也许设备当前连接到其他设备? |
12 | 0x0C | BLE_HCI_STATUS_CODE_COMMAND_DISALLOWED | |
13 | 0xD | GATT_INVALID_ATTRIBUTE_LENGTH | 写操作超过了属性的最大长度 |
15 | 0xF | GATT_INSUFFICIENT_ENCRYPTION | 给定操作的加密不足 |
18 | 0x12 | BLE_HCI_STATUS_CODE_INVALID_BTLE_COMMAND_PARAMETERS | |
19 | 0x13 | BLE_HCI_REMOTE_USER_TERMINATED_CONNECTION | 远程用户终止连接 (Remote device has forced a disconnect.) |
20 | 0x14 | BLE_HCI_REMOTE_DEV_TERMINATION_DUE_TO_LOW_RESOURCES | 由于资源不足,远程设备连接终止 |
21 | 0x15 | BLE_HCI_REMOTE_DEV_TERMINATION_DUE_TO_POWER_OFF | 远程设备由于电源关闭而终止连接不支持的远程功能 |
22 | 0x16 | BLE_HCI_LOCAL_HOST_TERMINATED_CONNECTION | 连接被本地主机终止 |
26 | 0x1A | BLE_HCI_UNSUPPORTED_REMOTE_FEATURE | |
30 | 0x1E | BLE_HCI_STATUS_CODE_INVALID_LMP_PARAMETERS | |
31 | 0x1F | BLE_HCI_STATUS_CODE_UNSPECIFIED_ERROR | |
34 | 0x22 | BLE_HCI_STATUS_CODE_LMP_RESPONSE_TIMEOUT | 超时响应问题。可以理解未握手,当一方发送请求握手的数据包, 需要对方在规定的时间内返回带有有效响应的数据包。如果超过时间没有收到该数据包,则断开连接并抛出该状态码。一般协议规定超时时间为40s. |
36 | 0x24 | BLE_HCI_STATUS_CODE_LMP_PDU_NOT_ALLOWED | |
40 | 0x28 | BLE_HCI_INSTANT_PASSED | |
41 | 0x29 | BLE_HCI_PAIRING_WITH_UNIT_KEY_UNSUPPORTED | 不支持与设备密钥配对错误代码 |
42 | 0x2A | BLE_HCI_DIFFERENT_TRANSACTION_COLLISION | |
58 | 0x3A | BLE_HCI_CONTROLLER_BUSY | |
59 | 0x3B | BLE_HCI_CONN_INTERVAL_UNACCEPTABLE | 不可接受的连接参数 |
60 | 0x3C | BLE_HCI_DIRECTED_ADVERTISER_TIMEOUT | |
61 | 0x3D | BLE_HCI_CONN_TERMINATED_DUE_TO_MIC_FAILURE | |
62 | 0x3E | BLE_HCI_CONN_FAILED_TO_BE_ESTABLISHED | |
128 | 0x80 | GATT_NO_RESSOURCES | |
129 | 0x81 | GATT_INTERNAL_ERROR | |
130 | 0x82 | GATT_WRONG_STATE | |
131 | 0x83 | GATT_DB_FULL | |
132 | 0x84 | GATT_BUSY | |
133 | 0x85 | GATT_ERROR | 可以是任何原因,从设备不在范围内到随机错误。 |
135 | 0x87 | GATT_ILLEGAL_PARAMETER | |
137 | 0x89 | GATT_AUTH_FAIL A GATT | 操作失败、错误等 |
143 | 0x8f | GATT_CONNECTION_CONGESTED | 远程设备连接拥塞(A remote device connection is congested) |
257 | 0x101 | GATT_FAILURE |