From 00a17fbd6a1cf669c0a5ccd23959b2e0610a51d0 Mon Sep 17 00:00:00 2001 From: km2023 Date: Wed, 20 May 2026 16:04:44 +0800 Subject: [PATCH] =?UTF-8?q?fix(sdk):=20=E5=90=8C=E6=AD=A5=20iOS=20?= =?UTF-8?q?=E2=80=94=20transferMedia=20=E5=85=A5=E5=8F=A3=E7=AB=8B?= =?UTF-8?q?=E5=8D=B3=E6=8A=8A=20=5FtransferProgress=20=E5=BD=92=E9=9B=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 旧实现里 _transferProgress 只在 transferFile() 内部才置 0,但 transferMedia 要先走 validateMediaFormat → aniConverter.convert → prepareTransfer 这条数秒级异步链,期间 StateFlow 还停留在上次结束 的 100。集成方一 collect 就看到旧值 100,体感像「上次进度被带过来」。 修法:transferMedia 在 ensureConnected() 后立即 _transferProgress.value = 0, collector 立即收到 0;后续 transferFile() 内的 = 0 因 StateFlow 的 distinct-value 语义被天然跳过。 对齐 ios:ed7de42。 Co-Authored-By: Claude Opus 4.7 (1M context) --- sdk/src/main/kotlin/com/duooomi/ble/DuooomiBleSDK.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/sdk/src/main/kotlin/com/duooomi/ble/DuooomiBleSDK.kt b/sdk/src/main/kotlin/com/duooomi/ble/DuooomiBleSDK.kt index 9dce5a5..a7f2af2 100644 --- a/sdk/src/main/kotlin/com/duooomi/ble/DuooomiBleSDK.kt +++ b/sdk/src/main/kotlin/com/duooomi/ble/DuooomiBleSDK.kt @@ -500,6 +500,7 @@ class DuooomiBleSDK(context: Context, val config: DuooomiBleConfig) { suspend fun transferMedia(fileUrl: String) { ensureConnected() + _transferProgress.value = 0 val url = fileUrl.trim() if (url.isEmpty()) throw DuooomiBleError.TransferFailed("Empty file URL")