From e69d6dee4a40df0095371076a74aabd2df2b292e Mon Sep 17 00:00:00 2001 From: QIU Date: Fri, 14 Aug 2026 09:11:45 +0000 Subject: [PATCH] =?UTF-8?q?fix(radar):=20=E4=BF=AE=E5=A4=8D=20offset=20sli?= =?UTF-8?q?der=20=E6=8B=96=E5=8A=A8=E6=97=B6=E5=A4=9A=E6=99=AE=E5=8B=92?= =?UTF-8?q?=E8=AE=A1=E7=AE=97=E7=94=A8=E6=97=A7=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题:onValueChange 回调里 offsetHz 是派生状态的旧快照,拖动时计算的频率滞后一帧。 修复:在回调内立即从 newVal 计算 newOffsetHz,传给多普勒计算器。 影响:拖动 offset 时频率显示实时正确。 --- .../com/rtbishop/look4sat/feature/radar/TransceiversPage.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/feature/radar/src/main/java/com/rtbishop/look4sat/feature/radar/TransceiversPage.kt b/feature/radar/src/main/java/com/rtbishop/look4sat/feature/radar/TransceiversPage.kt index 4ec92cee..756694c1 100644 --- a/feature/radar/src/main/java/com/rtbishop/look4sat/feature/radar/TransceiversPage.kt +++ b/feature/radar/src/main/java/com/rtbishop/look4sat/feature/radar/TransceiversPage.kt @@ -593,13 +593,14 @@ private fun DopplerFrequencyCalculator( value = offsetKHz, onValueChange = { newVal -> offsetKHz = newVal + val newOffsetHz = newVal.toDoubleOrNull()?.let { it * 1000 }?.toLong() ?: 0L // Trigger recompute based on last edited field if (lastEditedBy == EditedField.TX) { val txMHz = txInputMHz.toDoubleOrNull() if (txMHz != null && txMHz > 0) { val txHz = (txMHz * 1_000_000).toLong() val rxHz = DopplerFrequencyCalculator.computeDownlinkFromUplinkWithOffset( - txHz, transponder, orbitalPos, offsetHz + txHz, transponder, orbitalPos, newOffsetHz ) rxInputMHz = if (rxHz != null) String.format(Locale.ENGLISH, "%.6f", rxHz / 1_000_000.0) else "" } @@ -608,7 +609,7 @@ private fun DopplerFrequencyCalculator( if (rxMHz != null && rxMHz > 0) { val rxHz = (rxMHz * 1_000_000).toLong() val txHz = DopplerFrequencyCalculator.computeUplinkFromDownlinkWithOffset( - rxHz, transponder, orbitalPos, offsetHz + rxHz, transponder, orbitalPos, newOffsetHz ) txInputMHz = if (txHz != null) String.format(Locale.ENGLISH, "%.6f", txHz / 1_000_000.0) else "" }