feat(vibration): 服务端参数下发+双层开关+音量控制
REQ-20260430-0037 新增 VibrationConfigManager: - MQTT type=7 → 更新振动方案参数(覆盖默认值) - MQTT type=8 → 更新用户配置(震动开关/语音开关/音量) - 线程安全(ConcurrentHashMap + @Volatile) - 内存存储不持久化(MQTT重连后服务端重新下发) VibrationController 新增 executeByPlanId(planId): - 内部完成:获取方案(优先服务端参数)→ 双层开关 → 音量控制 - 调用方只传 planId,不关心参数来源和开关逻辑 - PunchViewModel/NotificationManager 调用简化为一行 双层开关逻辑: - 系统级:方案自身 shockState/voiceState(type=7下发) - 用户级:全局 userShockEnabled/userVoiceEnabled(type=8下发) - 两层都开启才执行 音量控制: - MediaPlayer.setVolume(volume, volume) - volume = voiceValue / 100(服务端下发0~100) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -3,7 +3,6 @@ package com.xiaoqu.watch.service.manager
|
||||
import com.xiaoqu.watch.data.task.TaskStatistics
|
||||
import com.xiaoqu.watch.device.screen.ScreenController
|
||||
import com.xiaoqu.watch.device.sensor.VibrationController
|
||||
import com.xiaoqu.watch.device.sensor.VibrationDefaults
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.SupervisorJob
|
||||
@@ -131,10 +130,7 @@ class NotificationManager @Inject constructor(
|
||||
addTaskIds(taskIds)
|
||||
|
||||
// 震动 + 亮屏(只在首条时触发,暂存的合并后不重复震动)
|
||||
val pattern = VibrationDefaults.getPattern(PLAN_NEW_MESSAGE)
|
||||
if (pattern != null) {
|
||||
vibrationController.executePattern(pattern)
|
||||
}
|
||||
vibrationController.executeByPlanId(PLAN_NEW_MESSAGE)
|
||||
screenController.turnOn()
|
||||
|
||||
// 通知 HomeFragment 更新红点
|
||||
|
||||
Reference in New Issue
Block a user