From da74ca6d975d6c998cf106c1f3812a1600877121 Mon Sep 17 00:00:00 2001 From: dongliang Date: Thu, 30 Apr 2026 20:01:12 +0930 Subject: [PATCH] =?UTF-8?q?fix:=20shockTime/shockIntervalTime=20=E6=94=B9?= =?UTF-8?q?=E4=B8=BA=20Float=EF=BC=88=E6=9C=8D=E5=8A=A1=E7=AB=AF=E4=B8=8B?= =?UTF-8?q?=E5=8F=91=E5=B0=8F=E6=95=B0=E5=A6=82=200.50=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 实测服务端 type=7 下发的 shockTime=0.50、shockIntervalTime=0.50, 之前用 optInt 解析会截断为 0,导致振动时长 0ms。 - VibrationPattern: shockTime/shockIntervalTime Int → Float - VibrationConfigManager: optInt → optDouble().toFloat() - FiseVibrationController: 毫秒计算适配 Float Co-Authored-By: Claude Opus 4.6 (1M context) --- .../xiaoqu/watch/device/sensor/FiseVibrationController.kt | 4 ++-- .../xiaoqu/watch/device/sensor/VibrationConfigManager.kt | 4 ++-- .../com/xiaoqu/watch/device/sensor/VibrationPattern.kt | 8 ++++---- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/xiaoqu/watch/device/sensor/FiseVibrationController.kt b/app/src/main/java/com/xiaoqu/watch/device/sensor/FiseVibrationController.kt index 8a3264c..4d3a324 100644 --- a/app/src/main/java/com/xiaoqu/watch/device/sensor/FiseVibrationController.kt +++ b/app/src/main/java/com/xiaoqu/watch/device/sensor/FiseVibrationController.kt @@ -122,8 +122,8 @@ class FiseVibrationController @Inject constructor( */ @Suppress("DEPRECATION") private suspend fun executePatternLoop(pattern: VibrationPattern) { - val vibrateDurationMs = pattern.shockTime * 1000L - val intervalMs = pattern.shockIntervalTime * 1000L + val vibrateDurationMs = (pattern.shockTime * 1000).toLong() + val intervalMs = (pattern.shockIntervalTime * 1000).toLong() // 外层循环:频次循环 for (cycle in 0 until pattern.shockCycleTimes) { diff --git a/app/src/main/java/com/xiaoqu/watch/device/sensor/VibrationConfigManager.kt b/app/src/main/java/com/xiaoqu/watch/device/sensor/VibrationConfigManager.kt index 43884f0..69f109e 100644 --- a/app/src/main/java/com/xiaoqu/watch/device/sensor/VibrationConfigManager.kt +++ b/app/src/main/java/com/xiaoqu/watch/device/sensor/VibrationConfigManager.kt @@ -77,9 +77,9 @@ class VibrationConfigManager @Inject constructor() { serverParams[planId] = VibrationPattern( planId = planId, planName = obj.optString("planName", ""), - shockTime = obj.optInt("shockTime", 1), + shockTime = obj.optDouble("shockTime", 1.0).toFloat(), shockTimes = obj.optInt("shockTimes", 1), - shockIntervalTime = obj.optInt("shockIntervalTime", 0), + shockIntervalTime = obj.optDouble("shockIntervalTime", 0.0).toFloat(), shockCycleTimes = obj.optInt("shockCycleTimes", 1), shockState = obj.optInt("shockState", 1) == 1, voiceState = obj.optInt("voiceState", 1) == 1, diff --git a/app/src/main/java/com/xiaoqu/watch/device/sensor/VibrationPattern.kt b/app/src/main/java/com/xiaoqu/watch/device/sensor/VibrationPattern.kt index 5aecb14..8e29cfc 100644 --- a/app/src/main/java/com/xiaoqu/watch/device/sensor/VibrationPattern.kt +++ b/app/src/main/java/com/xiaoqu/watch/device/sensor/VibrationPattern.kt @@ -12,12 +12,12 @@ data class VibrationPattern( val planId: Int, /** 方案名称 */ val planName: String, - /** 单次振动时长(秒) */ - val shockTime: Int, + /** 单次振动时长(秒,支持小数如 0.5) */ + val shockTime: Float, /** 每频次振动次数 */ val shockTimes: Int, - /** 振动间休息时长(秒) */ - val shockIntervalTime: Int, + /** 振动间休息时长(秒,支持小数如 0.5) */ + val shockIntervalTime: Float, /** 频次循环次数 */ val shockCycleTimes: Int, /** 是否启用振动 */