b517c75cdd800df62522f554c5aede31d70aeeee
mpv 的 HTTP 长连接不会跟随网络迁移:换 Wi-Fi / Wi-Fi<->移动数据 会换掉出口 IP,旧连接失效但不一定报错,表现为进度停住、一直缓冲。 - 新增 NetworkWatcher:每 10s 枚举 IPv4 接口,签名变化即视为网络切换 (不依赖插件和额外权限,也能覆盖"同类型网络换 AP"的情况) - AudioService 收到变化后 3s 去抖,然后强制重连当前歌曲并 seek 回原位置 (force 参数跳过 2 分钟节流,因为这是明确的外部事件) 真机验证(公网链路 + 移动数据): 21:43:23.123 检测到网络变化 21:43:26.124 主动重连(3s 去抖) 21:43:26.289 自动恢复完成(165ms) 随后 position 35.5s -> 41.7s 正常推进
清听 QingTing
让远程音乐,像本地音乐一样可靠。
清听是一个面向 Android 的 WebDAV 音乐播放器。
它解决的事情很简单:
让存储在 WebDAV 服务器上的音频文件,获得稳定、连续、可控的本地级播放体验。
✨ 能力
- WebDAV 流式播放,无需下载
- 后台播放,退出应用不停
- 通知中心、锁屏、耳机控制
- 元数据读取与 SQLite 缓存
- 通知栏封面图
🚀 快速开始
# 克隆
git clone https://your-repo/qingting.git
cd qingting
# 获取依赖
flutter pub get
# 运行
flutter run
详细步骤:Getting Started →
📖 文档
- 整体架构 —— 系统怎么组织的
- 播放链路 —— 一首歌从点击到喇叭
- 元数据 —— 歌曲信息怎么被认识
- Android 集成 —— 怎么成为 Android 播放器
- 存储策略 —— 远程与本地如何共存
- 设计决策 —— 为什么选了这些方案
最好的播放器,是当你开始听歌之后,就再也感觉不到它技术细节的那一个。
Languages
Dart
96.7%
PowerShell
2.1%
Kotlin
1.2%