Skip to content

refactor: 组件改用共享采样服务并精简组件设置 - #7

Open
Starsky16 wants to merge 2 commits into
Yeson38:masterfrom
Starsky16:pr/2-component-refactor
Open

Starsky16 wants to merge 2 commits into
Yeson38:masterfrom
Starsky16:pr/2-component-refactor

Conversation

@Starsky16

@Starsky16 Starsky16 commented Sep 14, 2026 •

Copy link
Copy Markdown

概述

组件不再自行枚举设备与回退采样,改用 #6 引入的共享采样服务;组件设置只保留「显示侧」偏好。

这是「分贝监测插件重构与提醒功能」拆分系列的第 2/5 个 PR:

变更

  • DecibelComponent:通过 IAppHost.Host.Services 获取 AudioPeakMeter 与 DecibelMonitorSettingsService,用 DecibelCalculator 做线性峰值到显示刻度的换算;数值改用 AvaloniaProperty(StyledProperty)绑定,移除手写的 INotifyPropertyChanged;采样 Tick 增加节流,避免上一次采样未结束时堆积异步任务;放大倍数取自全局设置,同一麦克风的各组件数值一致。
  • DecibelComponentSettingsControl:由 249 行精简为纯显示偏好(分贝前缀、更新频率);测量/校准在 feat: 新增插件设置页并将校准上收为全局设置 #9 的插件设置页,提醒设置移到 feat: 新增分贝阈值提醒(通知提供方 + 渠道 + 组件提示) #8 的通知侧。
  • Plugin:移除重复的 GetVoicePeakValue()(组件不再使用)。
  • 旧实现遗留的 CS0108 / CS4014 警告随本次替换一并消失。

⚠️ 组件 GUID 变更:由占位值 FFFFFFFF-EEEE-DDDD-CCCC-BBBBBBBBBBBB 改为 3540a8df-963c-45e9-a42d-8a55824994d5。若已有用户布局引用旧 GUID,改 GUID 会使布局中的该组件失效;这里保持与 #5 一致,若更希望零兼容风险可以撤掉这一处改动(保留旧 GUID),请告知。

验证

dotnet build Decibel_Monitor.csproj -c Release
# 已成功生成:0 个警告 0 个错误

dotnet test Tests/Decibel_Monitor.Tests/Decibel_Monitor.Tests.csproj -c Release
# 已通过! - 失败: 0,通过: 28,已跳过: 0,总计: 28

组件显示与数值刷新已在宿主 ClassIsland 中人工实测(分贝前缀、更新频率、数值随声源变化)。

说明

本 PR 由 AI 辅助生成。

- 新增 Services:AudioPeakMeter(门面)、AudioDeviceEnumerator(设备枚举与缓存)、ContinuousPeakCapture(常驻静默捕获流)、OneShotPeakCapture(一次性三级回退采样)、DecibelCalculator(线性峰值与显示刻度换算)、PeakSample(采样结果纯数据)。

- 新增插件全局设置 DecibelMonitorGlobalSettings 与持久化服务 DecibelMonitorSettingsService(整体反序列化,新增设置项无需同步维护)。

- Plugin.Initialize 注册全局设置服务与共享采样服务;组件将在后续 PR 切换为该服务。

- 新增 Tests/Decibel_Monitor.Tests(xunit),覆盖计算换算与采样数据纯逻辑,共 28 条用例全绿。

由 VS Code 中的 Cline 辅助生成。
- DecibelComponent 从宿主 DI 获取 AudioPeakMeter 与 DecibelMonitorSettingsService,改用 DecibelCalculator 做线性峰值到显示刻度的换算,不再自行枚举设备并三级回退采样。

- 数值改用 AvaloniaProperty(StyledProperty)绑定,移除手写的 INotifyPropertyChanged;采样 Tick 增加节流,避免异步任务堆积;放大倍数取自全局设置,同一麦克风所有组件数值一致。

- 组件设置控件精简为显示侧偏好(分贝前缀、更新频率);测量/校准与提醒设置分别移至插件设置页与通知提供方设置。

- Plugin 移除重复的 GetVoicePeakValue()。

- 编译警告由 3 个降为 0 个(原 CS0108/CS4014 随旧实现一并移除)。

由 VS Code 中的 Cline 辅助生成。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant