Commit Graph

10 Commits

Author SHA1 Message Date
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