km2023
c39d107520
feat(demo): SDK 暴露 rawJsonEvents 调试通道;Demo 日志显示 BLE 收发原始 JSON
...
- BleTypes.kt 新增 BleRawJsonEvent(TX/RX,含 cmd 名/十六进制类型/JSON 字符串),KDoc 标注调试用、非业务契约
- BleProtocolService.sendJSON 内 emit TX;新增 rawJsonEmitter 注入回调避免协议层反向依赖
- DuooomiBleSDK 公开 SharedFlow<BleRawJsonEvent>;handleIncomingMessage 入口尽力 UTF-8 解码 emit RX(非 JSON 字节流静默跳过)
- DemoScreen LaunchedEffect 订阅,前缀 → TX / ← RX 写入现有 logs 列表
- iOS 当前无对应通道,本通道为 Android Demo 调试增强
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-13 12:03:33 +08:00
km2023
e63865092c
feat(sdk): 同步 iOS 改动 — owner→brand 重命名 + 硬绑前 brand 校验 + README 内部细节抹除
...
- DuooomiBleConfig.owner → brand(语义:设备品牌名),HTTP header x-owner 不变
- bind() 前置 verifyBrand:缺 deviceInfo 先 getDeviceInfo,与 config.brand 严格匹配,
不一致主动 disconnect 并抛 DuooomiBleError.BrandMismatch
- README 抹除软绑/对账/UpgradeRecord 等内部实现细节,仅保留厂商面向的公开 API
(功能代码完全保留:fetchLatestFirmware 内部三段串、unbind 软解、tryReportPendingUpgrade)
- README 顶部加 demo 优先验证提示
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-09 12:03:26 +08:00
km2023
d336ac358e
feat: 添加项目级指引文档,包含上游参照、修改前必读、Wiki索引及关键约束
2026-05-08 18:34:01 +08:00
km2023
0dbfab9519
fix: 流程对齐 iOS 严格 1:1(disconnect 不清 sn/firmwareUpgrade)
...
发现并修正以下 1:1 复刻偏离:
1. SDK:disconnect 行为
- iOS:被动断开 / 主动 disconnect 都 **不清** sn / firmwareUpgrade
· sn 仅在 unbind 成功 / fetchLatestFirmware 软绑失败回滚时清空
· firmwareUpgrade 仅在 fetchLatestFirmware 成功时覆盖
- 之前 Android 在两个 disconnect 入口都清,与 iOS 不一致;现已修正
2. Demo:otaFetchUserId / otaFetchSn 进入页面时的初始化
- iOS:onAppear 时同步默认 userId / 当前 sdk.sn 到字段
- Android:之前 bind 后才填,进入页面默认空;现已与 iOS 对齐
3. Demo:ConfigField 禁用自动大写 / 自动纠错
- iOS 用 .autocapitalization(.none).disableAutocorrection(true)
- Android 加 KeyboardOptions(autoCorrect=false, capitalization=None)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-08 16:38:37 +08:00
km2023
417012c49f
feat(demo): 对齐 iOS demo 布局 + Info+Ver 并发按钮
...
主要改动:
- DemoSecrets 默认值对齐 iOS:owner=xmly, scanNamePrefix=Duooomi-
- userId 默认值对齐:Cjgex9kTTTJq9u9RMOnc5hiIZTvrOOq3
- Config 区可在运行时编辑 owner/apiKey/scanPrefix,SharedPreferences
持久化;Reload SDK 按钮重建实例(旧 SDK 自动 disconnect)
- PlayMode 行:显示当前模式标签(循环 / 单播)+ Single/Loop 按钮
- Firmware OTA:3 个独立输入(sn/currentVersion/userId) +「回填当前
状态」+「拉取安装包」+「安装」三按钮,对齐 iOS WrapperTestView
- bind 完成 / version 更新自动回填 OTA 入参
- UpgradeRecords 4 状态展示:待上报 / ✅ 正确上报 / ❌ 错误上报
(版本不匹配) / 过期放弃
- 保留先前加的 Info+Ver 并发按钮(async 同时发 getDeviceInfo +
getVersion,验证不同 commandType 通道并发不冲突)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-08 16:03:54 +08:00
km2023
65ff905889
docs: README 重写,对齐新 OTA 流程
...
- 删除已下线的 firmwareIdentifier/firmwareStatus / hasNewerFirmware 文档
- 增加完整 OTA 三段式示例:bind → fetchLatestFirmware → upgradeFirmware
- 增加升级对账上报状态判定表(reported/outcome 四种状态)
- 增加 setPlayMode / Config owner+scanNamePrefix 必填字段说明
- 增加错误类型完整列表(含新增 AlreadyBoundByOtherUser /
SoftBindFailed / FirmwareUpgradeUnavailable)
- 增加服务端 endpoint 表 + BeijingTimeProvider 三级 fallback 说明
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-08 15:43:44 +08:00
km2023
2dde274578
feat(sdk): OTA 升级流程对齐 expo + 秘钥本地化
...
主要改动(与 iOS SDK 1:1 对齐):
- 新增 fetchLatestFirmware/upgradeFirmware/tryReportPendingUpgrade
三段 OTA 接口,对齐 expo bindDeviceWithOrchestration 行为
- bind 仅做硬绑+getVersion,软绑/对账上报/拉最新固件搬到
fetchLatestFirmware 内部串;软绑失败自动硬解回滚
- unbind 改胖:硬解 + 软解(容错失败仅 warn)
- UpgradeRecord 复合主键 (sn, firmwareId) 持久化(SharedPreferences)
+ sn 级 in-flight 互斥
- 新增 sn / firmwareUpgrade / upgradeRecords StateFlow,集成方
可观察对账上报结果(reported/outcome 状态)
- DuooomiBleConfig:删 firmwareIdentifier/firmwareStatus,
改 owner/scanNamePrefix 为必填字段
- 新增 ShipmentSnDeviceService(软绑/软解 HTTP)+
FirmwareUpgradeService(checkUpgrade/reportSuccess/reportFailure)
+ HttpHelper 共享 POST 工具
- 删 FirmwareInfo + FirmwareService + hasNewerFirmware(旧 API)
- 新增 FirmwareUpgradeCheckResult 模型(含 forceUpgrade 字段)
- BleClient 增加 service UUID 列表 log,便于固件兼容调试
- demo 秘钥移至本地 DemoSecrets.kt(gitignored),模板放 docs/
- demo 改造到新 OTA 流程 + 升级记录展示
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-08 15:42:04 +08:00
km2023
b4398518a9
feat: PlayMode 切换 + bind/unbind/setPlayMode 携带北京时间
...
主要改动(与 iOS SDK 1:1 对齐):
- 新增 BeijingTimeProvider:苏宁公开 API → header Date → 本地+8h 三级 fallback;
5 秒缓存 + Mutex 单飞复用
- 新增 PlayMode enum (SINGLE=0, LOOP=1)
- DeviceInfo 增加可选 loop 字段(旧固件无此字段时为 null)
- DeviceInfoService.bind/unbind/setPlayMode 共用 payload,带 time 字段;
loop == null 时严格省略 key(与 expo zod.optional 对齐)
- DuooomiBleSDK.setPlayMode(mode, userId):复用 BIND_DEVICE 命令通道,
isActivated 守卫;成功后自动刷新 deviceInfo
- Demo 增加 Single / Loop 按钮(gated by isActivated)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-08 15:30:01 +08:00
km2023
8b18292100
fix: 修复重连后 BLE write 失败问题 + 支持 composite build
...
- connect 前清理遗留 gatt,避免实例泄漏
- 等 CCCD descriptor 写入完成再 resume 连接,防止首次 write 卡在 gatt 串行队列
- writeWithoutResponse 失败后重试一次,仍失败抛 WriteFailed,让上层 RPC 快速失败而非等 10 秒超时
- sdk/build.gradle.kts 声明 group/version 以便 QA app composite build 引用
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-04-22 17:01:21 +08:00
km2023
ed34c59c35
feat: 增加媒体格式校验,支持 JPEG、PNG、GIF、MP4、WebM、WebP 格式
2026-04-20 16:19:10 +08:00
km2023
1dcae6e2f1
feat: 降低 SDK 最低兼容版本,支持 Kotlin 1.9.0 / AGP 7.4.2 / minSdk 23
...
SDK minSdk 26→23,jvmTarget 17→11,确保老版本项目可消费 AAR。
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-17 16:45:39 +08:00
km2023
1bcf838a15
feat: apiHost 改为 api.duooomi.com,ANI 转换参数可配置
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-16 14:26:18 +08:00
km2023
18c6f5e098
fix:sdk增加判断是否需要更新的方法
2026-04-13 18:36:59 +08:00
km2023
d655b13416
feat: implement Android BLE SDK with demo app
...
Complete Android port of duooomi-ios-sdk with 1:1 API parity.
Includes SDK library module and Jetpack Compose demo app.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-13 12:09:22 +08:00
km2023
43be8989f4
Add implementation plan for Android BLE SDK
...
14 tasks covering: Gradle scaffolding, types, protocol, models, config,
BleClient, services, public API facade, README.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-10 16:37:53 +08:00
km2023
97aaa6d454
Add Android BLE SDK design spec
...
1:1 feature parity with iOS DuooomiBleSDK, pure Kotlin, zero third-party deps.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-10 16:33:05 +08:00