fix: shockTime/shockIntervalTime 改为 Float(服务端下发小数如 0.50)

实测服务端 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) <noreply@anthropic.com>
This commit is contained in:
dongliang
2026-04-30 20:01:12 +09:30
parent 6e8c93fc46
commit da74ca6d97
3 changed files with 8 additions and 8 deletions

View File

@@ -122,8 +122,8 @@ class FiseVibrationController @Inject constructor(
*/ */
@Suppress("DEPRECATION") @Suppress("DEPRECATION")
private suspend fun executePatternLoop(pattern: VibrationPattern) { private suspend fun executePatternLoop(pattern: VibrationPattern) {
val vibrateDurationMs = pattern.shockTime * 1000L val vibrateDurationMs = (pattern.shockTime * 1000).toLong()
val intervalMs = pattern.shockIntervalTime * 1000L val intervalMs = (pattern.shockIntervalTime * 1000).toLong()
// 外层循环:频次循环 // 外层循环:频次循环
for (cycle in 0 until pattern.shockCycleTimes) { for (cycle in 0 until pattern.shockCycleTimes) {

View File

@@ -77,9 +77,9 @@ class VibrationConfigManager @Inject constructor() {
serverParams[planId] = VibrationPattern( serverParams[planId] = VibrationPattern(
planId = planId, planId = planId,
planName = obj.optString("planName", ""), planName = obj.optString("planName", ""),
shockTime = obj.optInt("shockTime", 1), shockTime = obj.optDouble("shockTime", 1.0).toFloat(),
shockTimes = obj.optInt("shockTimes", 1), shockTimes = obj.optInt("shockTimes", 1),
shockIntervalTime = obj.optInt("shockIntervalTime", 0), shockIntervalTime = obj.optDouble("shockIntervalTime", 0.0).toFloat(),
shockCycleTimes = obj.optInt("shockCycleTimes", 1), shockCycleTimes = obj.optInt("shockCycleTimes", 1),
shockState = obj.optInt("shockState", 1) == 1, shockState = obj.optInt("shockState", 1) == 1,
voiceState = obj.optInt("voiceState", 1) == 1, voiceState = obj.optInt("voiceState", 1) == 1,

View File

@@ -12,12 +12,12 @@ data class VibrationPattern(
val planId: Int, val planId: Int,
/** 方案名称 */ /** 方案名称 */
val planName: String, val planName: String,
/** 单次振动时长(秒) */ /** 单次振动时长(秒,支持小数如 0.5 */
val shockTime: Int, val shockTime: Float,
/** 每频次振动次数 */ /** 每频次振动次数 */
val shockTimes: Int, val shockTimes: Int,
/** 振动间休息时长(秒) */ /** 振动间休息时长(秒,支持小数如 0.5 */
val shockIntervalTime: Int, val shockIntervalTime: Float,
/** 频次循环次数 */ /** 频次循环次数 */
val shockCycleTimes: Int, val shockCycleTimes: Int,
/** 是否启用振动 */ /** 是否启用振动 */