| 项目 | 值 | 说明 |
| BLE 4.0 ATT MTU 默认值 | 23 字节 | 规范规定的最小值 |
| ATT 头部开销 | 3 字节 | 操作码 + 句柄 |
| 实际有效载荷 | 20 字节 | 23 - 3 = 20 |
| NullTerminateStrings 开销 | 1 字节 | 默认追加 \0 |
| WriteStrings 实际可用 | 22 字节 | 23 - 1(null终止符) |
| # | 问题 | 影响 | 严重程度 |
| 1 | 23字节截断 | 超过23字节的字符串被静默截断,无警告 | 严重 |
| 2 | Null终止符默认开启 | nullTerminateStrings = true,占用1字节,实际可用仅22字节 | 中等 |
| 3 | 只取 data.get(0) | 只写第一个字符串,忽略列表中的其他字符串 | 中等 |
| 4 | 无 MTU 协商感知 | 不查询当前连接的 MTU 大小 | 中等 |
| 属性 | 值 |
| 属性名 | NullTerminateStrings |
| 默认值 | true(在 BluetoothLEint.java 第1243行) |
| 效果 | 在字符串末尾追加 \0 字节 |
| 占用 | 1字节 |
| Designer 可设置 | 是(可改为 false) |
| 对比项 | WriteStrings | WriteBytes |
| 长度限制 | 23字节硬编码(含null终止符仅22字节) | 无硬编码限制 |
| Null终止符 | 默认追加 \0 | 不追加 |
| 截断行为 | 静默截断,无警告 | 不截断 |
| 多数据支持 | 只取第一个 | 支持列表 |
| MTU感知 | 无 | 无(但Android栈自动处理) |
| 推荐度 | 短字符串可用 | 推荐 |
| 欢迎光临 清泛IT社区 (https://bbs.tsingfun.com/) | Powered by Discuz! X3.3 |