# OMusic **Repository Path**: KillBugX/omusic ## Basic Information - **Project Name**: OMusic - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-17 - **Last Updated**: 2026-03-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # OMusic - 鸿蒙音乐播放器 一款功能强大的鸿蒙原生音乐播放器,支持本地音乐、NAS音乐库、云盘音乐多源播放。 ## 功能特性 ### 核心功能 - 多源音乐播放 - 本地音乐文件播放 - NAS音乐库访问(SMB/CIFS、WebDAV协议) - 云盘音乐播放(百度网盘、阿里云盘、夸克云盘) ### 播放功能 - 完整的播放控制 - 播放/暂停/停止 - 上一首/下一首 - 进度条拖动 - 音量调节 - 播放模式 - 顺序播放 - 随机播放 - 单曲循环 - 循环模式 - 不循环 - 列表循环 - 单曲循环 - 后台播放 - 锁屏控制 - 通知栏控制 ### 音乐管理 - 音乐扫描和索引 - 自动扫描本地音乐 - 支持多种音频格式(MP3、FLAC、WAV、AAC、OGG、M4A、WMA、APE) - 实时扫描进度显示 - 音乐搜索和过滤 - 关键词搜索 - 按艺术家筛选 - 按专辑筛选 - 按播放次数排序 - 分类管理 - 艺术家列表 - 专辑列表 - 最近播放 - 最常播放 - 播放列表管理 - 创建/编辑/删除播放列表 - 播放列表排序 - 收藏功能 ### NAS功能 - 多NAS支持 - SMB/CIFS协议 - WebDAV协议 - NAS配置管理 - 添加/编辑/删除NAS配置 - 连接状态管理 - NAS文件浏览 - 目录导航 - 文件列表 - 音乐扫描 ### 云盘功能 - 多云盘支持 - 百度网盘 - 阿里云盘 - 夸克云盘 - OAuth认证 - 安全的第三方登录 - Token自动刷新 - 云盘文件浏览 - 目录导航 - 文件列表 - 音乐扫描 ### 用户界面 - 现代化UI设计 - Material Design风格 - 流畅的动画效果 - 响应式布局 - 底部导航栏 - 播放器 - 音乐库 - 设置 - 我的 - 个性化设置 - 主题切换 - 语言设置 ## 技术栈 ### 开发环境 - **系统版本**: HarmonyOS NEXT 5.0+ - **开发语言**: ArkTS (TypeScript超集) - **开发工具**: DevEco Studio 5.0+ - **最低API版本**: API 9 ### 核心框架 - **UI框架**: ArkUI (鸿蒙原生声明式UI框架) - **多媒体**: AVPlayer (官方多媒体播放器) - **媒体会话**: AVSession (锁屏控制、通知栏控制) ### 数据存储 - **关系型数据库**: RelationalStore (SQLite) - **键值对存储**: Preferences - **分布式数据**: DistributedData ### 网络通信 - **HTTP客户端**: @ohos/net.http - **第三方库**: @ohos/axios ### 文件管理 - **文件系统**: @ohos/file.fs - **文件选择器**: @ohos/file.picker ## 项目结构 ``` OMusic/ ├── AppScope/ # 应用级别 │ ├── app.json5 # 应用配置 │ └── resources/ # 应用资源 │ └── base/ │ └── element/ │ └── string.json # 应用名称、描述 │ ├── entry/ # 模块级别 │ ├── src/main/ │ │ ├── ets/ # 源代码 │ │ │ ├── entryability/ │ │ │ │ └── EntryAbility.ets # 应用入口 │ │ │ ├── pages/ # 页面 │ │ │ │ ├── PlayerPage.ets # 播放器页面 │ │ │ │ ├── LibraryPage.ets # 音乐库页面 │ │ │ │ ├── SettingsPage.ets # 设置页面 │ │ │ │ └── ProfilePage.ets # 我的页面 │ │ │ ├── components/ # UI组件 │ │ │ │ ├── PlayerControls.ets # 播放控制组件 │ │ │ │ └── MusicListItem.ets # 音乐列表项组件 │ │ │ ├── managers/ # 业务管理器 │ │ │ │ ├── PlayerManager.ets # 播放器管理 │ │ │ │ ├── MusicManager.ets # 音乐管理 │ │ │ │ ├── NASManager.ets # NAS管理 │ │ │ │ └── CloudManager.ets # 云盘管理 │ │ │ ├── providers/ # 数据提供者 │ │ │ │ ├── LocalProvider.ets # 本地音乐提供者 │ │ │ │ ├── NASProvider.ets # NAS提供者 │ │ │ │ └── CloudProvider.ets # 云盘提供者 │ │ │ ├── services/ # 基础服务 │ │ │ │ ├── AudioService.ets # 音频服务 │ │ │ │ ├── NetworkService.ets # 网络服务 │ │ │ │ ├── StorageService.ets # 存储服务 │ │ │ │ └── UtilsService.ets # 工具服务 │ │ │ ├── models/ # 数据模型 │ │ │ │ ├── Music.ets # 音乐模型 │ │ │ │ ├── Playlist.ets # 播放列表模型 │ │ │ │ ├── User.ets # 用户模型 │ │ │ │ ├── NASConfig.ets # NAS配置模型 │ │ │ │ └── CloudConfig.ets # 云盘配置模型 │ │ │ ├── utils/ # 工具类 │ │ │ │ ├── Logger.ets # 日志工具 │ │ │ │ └── UtilsService.ets # 工具服务 │ │ │ └── constants/ # 常量定义 │ │ │ └── AppConstants.ets # 应用常量 │ │ ├── resources/ # 模块资源 │ │ │ └── base/ │ │ │ ├── element/ # 资源元素 │ │ │ │ ├── string.json # 字符串资源 │ │ │ │ └── color.json # 颜色资源 │ │ │ └── profile/ # 配置文件 │ │ │ └── main_pages.json # 页面配置 │ │ └── module.json5 # 模块配置 │ ├── build-profile.json5 # 构建配置 │ ├── oh-package.json5 # 依赖配置 │ └── hvigorfile.ts # 构建脚本 │ ├── build-profile.json5 # 项目构建配置 ├── oh-package.json5 # 项目依赖配置 ├── hvigorfile.ts # 项目构建脚本 ├── .gitignore # Git忽略文件 └── README.md # 项目说明文档 ``` ## 快速开始 ### 环境要求 - DevEco Studio 5.0+ - HarmonyOS SDK API 9+ - Node.js 14+ (如果需要) ### 安装步骤 1. **克隆项目** ```bash git clone https://github.com/your-username/OMusic.git cd OMusic ``` 2. **打开项目** - 使用 DevEco Studio 打开项目目录 3. **安装依赖** - DevEco Studio 会自动安装依赖 - 或者手动执行: ```bash ohpm install ``` 4. **运行项目** - 连接鸿蒙设备或启动模拟器 - 点击 DevEco Studio 的运行按钮 ### 构建发布版本 1. **配置签名** - 在 DevEco Studio 中配置签名证书 2. **构建HAP包** - 选择 Build > Build Hap(s)/APP(s) - 生成的 HAP 文件在 `build/default/outputs/default/` 目录 ## 开发指南 ### 添加新功能 1. **创建页面** ```typescript // entry/src/main/ets/pages/NewPage.ets @Entry @Component struct NewPage { build() { Column() { Text('New Page') } } } ``` 2. **注册页面** ```json // entry/src/main/resources/base/profile/main_pages.json { "src": [ "pages/NewPage" ] } ``` 3. **创建服务** ```typescript // entry/src/main/ets/services/NewService.ets export class NewService { private static instance: NewService; static getInstance(): NewService { if (!NewService.instance) { NewService.instance = new NewService(); } return NewService.instance; } } ``` ### 代码规范 - 使用 ArkTS 语法 - 遵循 TypeScript 类型检查 - 使用语义化命名 - 添加必要的注释 ### 调试技巧 1. **查看日志** ```typescript import { logger } from '../utils/Logger'; logger.info('Debug message'); logger.error('Error message', error); ``` 2. **使用DevEco Studio调试器** - 设置断点 - 查看变量值 - 单步执行 ## 架构设计 ### 分层架构 ``` ┌─────────────────────────────────────────────────────────┐ │ Presentation Layer │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ Player │ │ Library │ │ Settings │ │ │ │ Screen │ │ Screen │ │ Screen │ │ │ └──────────┘ └──────────┘ └──────────┘ │ └─────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────┐ │ Business Layer │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ Player │ │ Music │ │ Playlist │ │ │ │ Manager │ │ Manager │ │ Manager │ │ │ └──────────┘ └──────────┘ └──────────┘ │ └─────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────┐ │ Data Layer │ │ ┌──────────┐ ┌──────────┐ ┌─────────┐ │ │ │ Local │ │ NAS │ │ Cloud │ │ │ │ Provider │ │ Provider │ │ Provider │ │ │ └──────────┘ └──────────┘ └─────────┘ │ └─────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────┐ │ Infrastructure │ │ ┌──────────┐ ┌──────────┐ ┌─────────┐ │ │ │ Audio │ │ Network │ │ Storage │ │ │ │ Engine │ │ Service │ │ Service │ │ │ └──────────┘ └──────────┘ └─────────┘ │ └─────────────────────────────────────────────────────────┘ ``` ### 设计模式 - **单例模式**: Service 和 Manager 类 - **观察者模式**: 状态通知机制 - **工厂模式**: Provider 创建 - **策略模式**: 不同协议的访问策略 ## 贡献指南 欢迎贡献代码!请遵循以下步骤: 1. Fork 本仓库 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 提交 Pull Request ### 代码提交规范 - feat: 新功能 - fix: 修复bug - docs: 文档更新 - style: 代码格式调整 - refactor: 重构代码 - test: 测试相关 - chore: 构建/工具链相关 示例: ``` feat: 添加歌词显示功能 fix: 修复播放器崩溃问题 docs: 更新README文档 ``` ## 许可证 本项目采用 MIT 许可证 - 详见 [LICENSE](LICENSE) 文件 ## 联系方式 - 项目地址: https://github.com/your-username/OMusic - 问题反馈: https://github.com/your-username/OMusic/issues - 邮箱: your-email@example.com ## 致谢 感谢所有为本项目做出贡献的开发者! ## 更新日志 ### v1.0.0 (2026-03-17) - 初始版本发布 - 实现本地音乐播放功能 - 实现NAS音乐访问功能 - 实现云盘音乐播放功能 - 实现音乐管理功能 - 实现播放器控制功能 ## 待办事项 - [ ] 歌词功能 - [ ] LRC歌词解析 - [ ] 歌词同步显示 - [ ] 歌词搜索 - [ ] 音效处理 - [ ] 均衡器 - [ ] 音效预设 - [ ] 音量增强 - [ ] 更多UI优化 - [ ] 主题切换 - [ ] 动画效果优化 - [ ] 更多交互细节 - [ ] 性能优化 - [ ] 虚拟列表 - [ ] 图片懒加载 - [ ] 内存优化 - [ ] 测试和调试 - [ ] 单元测试 - [ ] 集成测试 - [ ] 性能测试