Android BLE操作成功或失败status code对应解释

本文提供了一张蓝牙GATT协议中的状态码及其含义的手工编写对照表,这些状态码涵盖了从成功到各种错误情况的返回值。通过这张表,开发者可以更方便地定位和解决在蓝牙通信过程中遇到的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/* 成功或错误代码对应常量 */

常量名16进制code10进制code
GATT_SUCCESS0x000
GATT_INVALID_HANDLE0x011
GATT_READ_NOT_PERMIT0x022
GATT_WRITE_NOT_PERMIT0x033
GATT_INVALID_PDU0x044
GATT_INSUF_AUTHENTICATION0x055
GATT_REQ_NOT_SUPPORTED0x066
GATT_INVALID_OFFSET0x077
GATT_INSUF_AUTHORIZATION0x088
GATT_PREPARE_Q_FULL0x099
GATT_NOT_FOUND0x0a10
GATT_NOT_LONG0x0b11
GATT_INSUF_KEY_SIZE0x0c12
GATT_INVALID_ATTR_LEN0x0d13
GATT_ERR_UNLIKELY0x0e14
GATT_INSUF_ENCRYPTION0x0f15
GATT_UNSUPPORT_GRP_TYPE0x1016
GATT_INSUF_RESOURCE0x1117
GATT_NO_RESOURCES0x80128
GATT_INTERNAL_ERROR0x81129
GATT_WRONG_STATE0x82130
GATT_DB_FULL0x83131
GATT_BUSY0x84132
GATT_ERROR0x85133
GATT_CMD_STARTED0x86134
GATT_ILLEGAL_PARAMETER0x87135
GATT_PENDING0x88136
GATT_AUTH_FAIL0x89137
GATT_MORE0x8a138
GATT_INVALID_CFG0x8b139
GATT_SERVICE_STARTED0x8c140
GATT_ENCRYPED_MITMGATT_SUCCESS0
GATT_ENCRYPED_NO_MITM0x8d141
GATT_NOT_ENCRYPTED0x8e142
GATT_CONGESTED/0xE0 ~ 0xFC reserved for future use/0x8f143
GATT_CCC_CFG_ERR/Client Characteristic Configuration Descriptor Improperly Configured /0xFD253
GATT_PRC_IN_PROGRESS /Procedure Already in progress/0xFE254
GATT_OUT_OF_RANGE/Attribute value out of range/0xFF255


typedef UINT8 tGATT_STATUS;

常量名16进制10进制
GATT_RSP_ERROR0x011
GATT_REQ_MTU0x022
GATT_RSP_MTU0x033
GATT_REQ_FIND_INFO0x044
GATT_RSP_FIND_INFO0x055
GATT_REQ_FIND_TYPE_VALUE0x066
GATT_RSP_FIND_TYPE_VALUE0x077
GATT_REQ_READ_BY_TYPE0x088
GATT_RSP_READ_BY_TYPE0x099
GATT_REQ_READ0x0A10
GATT_RSP_READ0x0B11
GATT_REQ_READ_BLOB0x0C12
GATT_RSP_READ_BLOB0x0D13
GATT_REQ_READ_MULTI0x0E14
GATT_RSP_READ_MULTI0x0F15
GATT_REQ_READ_BY_GRP_TYPE0x1016
GATT_RSP_READ_BY_GRP_TYPE0x1117
GATT_REQ_WRITE0x12
/* 0001-0010 (write)*/
18
GATT_RSP_WRITE0x1319
GATT_CMD_WRITE 
or
GATT_WRITE_CMD
0x5282
GATT_REQ_PREPARE_WRITE0x1622
GATT_RSP_PREPARE_WRITE0x1723
GATT_REQ_EXEC_WRITE0x1824
GATT_RSP_EXEC_WRITE0x1925
GATT_HANDLE_VALUE_NOTIF0x1B27
GATT_HANDLE_VALUE_IND0x1D29
GATT_HANDLE_VALUE_CONF0x1E30
GATT_SIGN_CMD_WRITE
or
GATT_SIGN_WRITE
0xD2210
GATT_OP_CODE_MAXGATT_HANDLE_VALUE_CONF + 1 /* 0x1E = 30 + 1 = 31*/


纯手工编写的常量名和status code对应关系表,希望能对大家开发中遇到的问题有些帮助。 
更多信息可参考Android源码 
https://android.googlesource.com/platform/external/bluetooth/bluedroid/+/android-cts-5.1_r17/stack/include/gatt_api.h

### Android 蓝牙 BLE 源码解析 #### BluetoothLeService 类中的写入特征值方法 `BluetoothLeService` 是用于处理蓝牙低功耗(BLE)通信的服务类。其中 `writeCharacteristic` 方法负责向远程设备发送数据: ```java public void writeCharacteristic(byte[] bytes) { if (mBluetoothAdapter == null || mBluetoothGatt == null) { Log.w(TAG, "BluetoothAdapter not initialized"); return; } mList.add(bytes); } ``` 此段代码展示了如何在未初始化的情况下返回警告日志并终止操作,同时也记录了待发送的数据到列表中[^1]。 #### 特征读取回调函数 当应用程序请求读取某个特定的 GATT 特性时,会触发如下所示的方法来接收来自远端设备的信息: ```java public void onCharacteristicRead(BluetoothGatt gatt, android.bluetooth.BluetoothGattCharacteristic characteristic, int status) ``` 该方法接受三个参数:连接对象、特性以及状态码,允许开发者依据这些信息执行进一步的操作更新界面显示[^2]。 #### 安装路径说明 对于编译后的库文件安装位置,在某些情况下可以找到类似下面这样的描述: ``` so生成路径: Install: out/target/product/s700_cb7/system/lib/hw/bluetooth.default.so ``` 这表明了蓝牙模块对应的共享库会被放置于指定目录下以便系统加载使用[^3]。 #### Activity 生命周期管理 为了更好地控制应用行为,特别是在涉及权限获取等场景时,可能会用到如下的生命周期钩子函数来进行相应处理: ```java protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); // Handle result here... } ``` 通过重载这个方法可以在用户完成授权其他交互动作之后得到反馈,并据此调整程序逻辑[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值