# DenonKeepAlive **Repository Path**: beginnerdev/denon-keep-alive ## Basic Information - **Project Name**: DenonKeepAlive - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-13 - **Last Updated**: 2026-10-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DenonKeepAlive 从此前保留的源码及 Xcode 工程配置恢复,恢复日期:2026-09-28。 ## 使用 用 Xcode 打开 DenonKeepAlive.xcodeproj,选择 DenonKeepAlive scheme 后运行。 程序仅显示菜单栏图标,没有普通窗口。选择 USB AUDIO DAC 输出设备并开启自动保活。 签名保留原开发团队;若 Xcode 提示签名问题,在 Signing & Capabilities 中选择自己的开发团队。 ## 已恢复功能 - 菜单栏开关、输出设备选择和状态显示。 - 按持久 UID 绑定音频输出,USB/KVM 断开后等待,重连后恢复。 - 48 kHz 双声道,1 kHz 正弦波,幅度 3 / 32767,约 -80.8 dBFS peak。 - 检测其他进程向目标设备的音频输出,空闲 30 分钟暂停保活,检测到输出时恢复。 - 保存设备选择及开关状态。登录自启动尚未实现。 ## 已知限制:音箱待机问题尚未解决 检测依据是进程的音频输出状态,不是实际音量。应用持续输出静音也可能重置空闲计时。 “已暂停保活”只代表本程序停止输出,并不代表 USB DAC 或 Denon 已待机。 之前排查发现 streamMusic 和 EnglishCard 仍占用 DAC;DAC 是否持续发送光纤信号还需硬件验证。 本次恢复不代表上述问题已经修复。 ## 测试 Tests/AudioSmoke.swift 是独立测试入口,不加入 App target。 它使用真实 USB AUDIO DAC 执行低电平启停,并通过模拟时钟验证 30 分钟暂停、恢复、重连及偏好保存。 原 Git 历史和 Xcode 用户界面状态未从源码备份中恢复。 ## 音箱音量控制 状态栏面板提供 0–100 音量滑动条、静音切换和刷新,连接 `192.168.0.17:1255` 的 Denon Home 550。 通过官方 HEOS CLI 控制音箱音量,保活信号电平不受此功能修改。 每次先按 IP 匹配设备,不把其他 HEOS 设备当作目标,也不保存音量或在重连后恢复旧音量。 只在菜单打开时每 3 秒同步;关闭菜单后停止刷新,每批请求结束后断开连接。 首次使用时如 macOS 询问局域网权限,请允许 DenonKeepAlive 访问。 错误或超时时禁用控制,重新打开菜单或点击刷新会再尝试。 `Tests/HEOSSmoke.swift` 验证实际协议读取和离线状态;加 `--exercise-volume` 会短暂降低一级再恢复,并写回相同静音状态。 协议文档:https://assets.denon.com/DocumentMaster/us/HEOS_CLI_ProtocolSpecification-Version.pdf 滑动条合并 150 毫秒内的拖动请求,松手时发送最终值;进行中的请求结束后继续发送最新目标值。拖动期间暂停自动刷新,网络失败时清除待发目标,不在重连后重放。