# Music **Repository Path**: gaojinlei/Music ## Basic Information - **Project Name**: Music - **Description**: GJL的Music简易本地播放器(持续维护中) - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-04-02 - **Last Updated**: 2022-04-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Music V1.0.1 ## 概述 ​ App名称:Music ​ 适用版本:23—29 ​ 请务必给予通知栏,录音,在其他App上层显示(悬浮窗)权限 ​ 地址: https://github.com/g1587613421/Music ## 版本特性 1. 启动特效动画 2. 封面旋转并在没有播放的时候具有碎片显示特效 3. 主页歌词显示 4. 全屏歌词显示 5. 桌面悬浮窗歌词显示 6. 歌词彩色显示 7. 进度条辅助选择器 8. 通知栏播放控制 ## 其他说明 1. 性能已经做大幅度提升,资源占用极低 2. 全屏歌词性能不佳,初始化时容易出现卡顿 3. 歌词格式不完善容易造成进度条辅助选择器与实际显示不太同步 4. 音乐资源只要满足MusicData.java中的定义即可播放,数据来源可不限制,但是必须完全下载后才可以播放 ## 亮点 1. 使用QMUI组件和主题的颜色搭配 2. App启动动画 3. 封面旋转和碎片显示特效 4. 进度条拖动选择有辅助选择器(帮助查看进度条所在位置对应的歌词) 5. 示波器采用四种显示方式可以通过点击切换(条形图,波形图,柱状图,无) 6. 全屏悬浮歌词显示效果 7. 简单的桌面悬浮窗 8. 通知栏控制音乐播放 9. 全局除了有个**public static** MainActivity *mainActivity*;*//太懒了 \* 外其他地方合理运用设计模式已经尽可能解耦合—虽然耦合度还是有一点高 ## 不足 1. 由于对歌词的要求太高没有开放从目录中读取音频和歌词的功能 ## 关于APP的问题说明 1. 问题一:播放音乐非常卡顿,这可能是虚拟机本身的原因(Gpu),App本身并未占用太多资源 2. ~~App侧边栏虚拟机环境下播放音乐的时候将不能正常显示,代码运行逻辑完全正确,亲测三款真机下均无此问题,该问题原因尚不明确!!!(有可能是因为QMUI在DrawerLayout布局下主题失效造成的)~~ -已经在V1.0.2修复(线程锁粒度选择过小-侧边栏刷新频繁外加组件加载较慢,使已经绘制好的布局被下次方法调用删掉) 3. 进度辅助选择器问题:有可能出现选择的进度上的歌词和实际要播放的不是统一位置(比如慢两句), 这是歌词不规整造成的 常见的歌词最后一句歌词的时间使用的是音乐结束时间,有的是音乐中歌词结束的时间。本程序最后一个歌词的时间采用的是音乐结束时的时间,如果是歌词结束时间将无法得知歌词结束后将会有多久是只有音乐没有歌词的,那样辅助选择器将产生误差。 辅助选择器查找歌词的时候已经采用两种方式同时查找,经过优化后消除了绝大多数歌词误差,但是对于一句歌词时间大于2s的还是无能为力 ## 最新App体验地址: https://ww.lanzous.com/ibez7mj ## 视频演示地址: https://ww.lanzous.com/ibf0pja # Music V1.0.2 ## 变更: 重构侧边栏显示逻辑 重构通知栏广播方式 ~~解决较低概率下的音乐切换(上/下一曲)失败~~--(复现) 解决进度条辅助器的偶尔显示异常 优化广播筛选机制防止用户连续切换导致内存异常--0.5秒 ## 待解决问题: 通过侧边栏,切换下一曲播放状态判断发生错误,需要优化ispause变量的赋值逻辑