diff --git a/demo/src/main/kotlin/com/duooomi/ble/demo/DemoScreen.kt b/demo/src/main/kotlin/com/duooomi/ble/demo/DemoScreen.kt index 5cbb497..e425716 100644 --- a/demo/src/main/kotlin/com/duooomi/ble/demo/DemoScreen.kt +++ b/demo/src/main/kotlin/com/duooomi/ble/demo/DemoScreen.kt @@ -84,14 +84,20 @@ fun DemoScreen( var otaFetchVersion by remember(sdk) { mutableStateOf("") } var otaFetchUserId by remember(sdk) { mutableStateOf("") } - // bind 完成 → 回填 OTA 入参 - LaunchedEffect(isActivated, sn) { - if (isActivated && sn.isNotEmpty()) { + // 进入页面初次填充(对齐 iOS WrapperTestView onAppear) + LaunchedEffect(sdk) { + if (otaFetchSn.isEmpty()) otaFetchSn = sn + if (otaFetchVersion.isEmpty()) otaFetchVersion = version + if (otaFetchUserId.isEmpty()) otaFetchUserId = userId + } + // bind 完成 → 自动回填 sn / currentVersion(对齐 iOS onChange isActivated) + LaunchedEffect(isActivated) { + if (isActivated) { otaFetchSn = sn - if (version.isNotEmpty()) otaFetchVersion = version - if (otaFetchUserId.isEmpty()) otaFetchUserId = userId + otaFetchVersion = version } } + // getVersion 单独触发时也同步过来 LaunchedEffect(version) { if (version.isNotEmpty()) otaFetchVersion = version } @@ -605,7 +611,11 @@ private fun ConfigField(label: String, value: String, onChange: (String) -> Unit onValueChange = onChange, modifier = Modifier.weight(1f), singleLine = true, - textStyle = androidx.compose.ui.text.TextStyle(fontSize = 12.sp) + textStyle = androidx.compose.ui.text.TextStyle(fontSize = 12.sp), + keyboardOptions = androidx.compose.foundation.text.KeyboardOptions( + autoCorrect = false, + capitalization = androidx.compose.ui.text.input.KeyboardCapitalization.None + ) ) } } diff --git a/sdk/src/main/kotlin/com/duooomi/ble/DuooomiBleSDK.kt b/sdk/src/main/kotlin/com/duooomi/ble/DuooomiBleSDK.kt index 14a879c..20be589 100644 --- a/sdk/src/main/kotlin/com/duooomi/ble/DuooomiBleSDK.kt +++ b/sdk/src/main/kotlin/com/duooomi/ble/DuooomiBleSDK.kt @@ -100,11 +100,12 @@ class DuooomiBleSDK(context: Context, val config: DuooomiBleConfig) { _deviceInfo.value = null _version.value = "" _isActivated.value = false - _sn.value = "" - _firmwareUpgrade.value = null _btState.value = ConnectionState.DISCONNECTED protocolService.stopListening() cancelAllPending(DuooomiBleError.NotConnected) + // 与 iOS 一致:sn / firmwareUpgrade 不在断开时重置 + // —— sn 仅在 unbind 成功 / fetchLatestFirmware 软绑失败回滚时清空 + // —— firmwareUpgrade 仅在 fetchLatestFirmware 成功时覆盖 } } } @@ -198,8 +199,6 @@ class DuooomiBleSDK(context: Context, val config: DuooomiBleConfig) { _deviceInfo.value = null _version.value = "" _isActivated.value = false - _sn.value = "" - _firmwareUpgrade.value = null _btState.value = ConnectionState.DISCONNECTED BleLog.i("Disconnected", "Connect")