├── README.md └── README.original.md /README.md: -------------------------------------------------------------------------------- 1 | # T Music Player 2 | 3 | 这是一款完全离线的音乐播放器安卓App,适用于追求纯粹听歌体验的朋友们。如果你有自己的音乐文件库,本应用也许适合你。 4 | 5 | > 应用市场上架太麻烦、太贵,要认证、软著、备案等等流程和费用。 6 | > 7 | > 此为非盈利App,纯粹无广无盈利。 8 | > 9 | > 自己独享有点可惜,所以就分享出来! 10 | 11 | > 暂时没有IOS版本,主要是两个原因: 12 | > - Apple Store 需要开发者账号年费600+/年,还没算认证、软著、备案的费用。 13 | > - IOS 系统管理离线音乐本来就不是很方便,一般必须要通过 PC 上的苹果官方应用。 14 | 15 | [下载地址](https://github.com/xachary/t_music_player/releases) 16 | 17 | 喜欢请送我一个Star吧! 18 | 19 | 喜欢请送我一个Star吧! 20 | 21 | 喜欢请送我一个Star吧! 22 | 23 | > 歌词下载,推荐:[LDDC](https://github.com/chenmozhijin/LDDC/fork) -> [下载地址](https://github.com/chenmozhijin/LDDC/releases) 24 | > 25 | > 歌曲封面/歌手头像,推荐:[Apple Music](https://music.apple.com/) 26 | 27 | ## 支持横屏 28 | 29 | image 30 | 31 | > 【个人场景分享】 32 | > 33 | > 把手机、平板架起来摆放听歌,尤其是开车蓝牙连接、洗澡的时候。 34 | > 35 | > (垃圾车机,只能一直用手机蓝牙连接听歌😭) 36 | 37 | ## 支持系统媒体播放信息同步 38 | 39 | 1、手机 40 | 41 | image 42 | 43 | 2、手表 44 | 45 | image 46 | 47 | 3、车机 48 | > 类似“手表” 49 | 50 | ## 支持开启系统的固定应用模式 51 | 52 | image 53 | image 54 | image 55 | 56 | > 【个人场景分享】 57 | > 58 | > 把歌曲换成故事、儿歌,开启系统固定应用模式后,小朋友只能操作当前App,用于听故事、儿歌,不能沉迷游戏😊。 59 | > 60 | > 也可以防止猪朋狗友乱翻手机,哈哈。 61 | 62 | ## 四种歌曲列表 63 | 64 | 1、全部 65 | 66 | image 67 | 68 | > 目前自用1100多首歌,算上封面、歌词文件,总的3000多个文件,还行吧,不算太卡哈。 69 | 70 | 2、按歌手 71 | 72 | image 73 | image 74 | 75 | 3、心动歌曲 76 | 77 | image 78 | 79 | > 【个人场景分享】 80 | > 81 | > 我认为,最近真正喜欢一首歌: 82 | > 83 | > - 会主动选择播放它并听完 84 | > - 切歌切到它,也会听完 85 | > 86 | > 我认为,最近对一首歌兴趣减弱了: 87 | > 88 | > - 不会选择播放它 89 | > - 切歌切到它,会很快切走它 90 | > 91 | > 基于上面个人的见解,给歌曲加减分并排序,形成一个歌曲列表 92 | 93 | 4、自定义播放列表 94 | 95 | image 96 | image 97 | 98 | > 【个人场景分享】 99 | > 100 | > 开车蓝牙连接听歌,可以给特定的人准备播放列表 101 | > 102 | > 最近需要练习一些歌曲,无论是唱歌、跳舞,自定义播放列表还是很有必要的 103 | 104 | ## 本地音频文件三种匹配规则 105 | 106 | 1、歌曲名 - 艺术家1&艺术家2 107 | 108 | image 109 | 110 | > 一开始,我是习惯用这种方式,通过艺术家命名文件夹,整理自己的音乐库的 111 | 112 | 2、艺术家1&艺术家2 - 歌曲名 113 | 114 | image 115 | 116 | > 后来发现,用这种命名方式,一股脑都放到一个目录里,更适合懒人习惯,也挺好 117 | 118 | 3、ID3 119 | 120 | > 音频文件元数据,也是作为兜底的匹配方式 121 | 122 | ## 本地艺术家头像匹配 123 | 124 | image 125 | 126 | > 支持常见的图片格式 127 | 128 | ## 四种播放顺序 129 | 130 | - 当前播放列表循环 131 | - 当前播放列表顺序 132 | - 随机 133 | - 单曲循环 134 | 135 | >【个人场景分享】 136 | > 137 | > 打开应用,首先出现的就是“随机播放”按钮,个人习惯,因为选择困难 138 | > 139 | > image 140 | 141 | ## 延时停止播放 142 | 143 | image 144 | image 145 | 146 | >【个人场景分享】 147 | > 148 | > 习惯了睡前戴一只蓝牙耳机,听音乐催眠 149 | 150 | ## A-B区间循环播放 151 | 152 | image 153 | image 154 | 155 | >【个人场景分享】 156 | > 157 | > 可以用于歌曲练习,无论是唱歌、跳舞,可以重复训练 158 | 159 | ## 两种排序 160 | 161 | 1、按标题 162 | 163 | image 164 | 165 | > 【个人场景分享】 166 | > 167 | > 按英文、拼音首字母快速定位 168 | > 169 | > 另外,这里的搜索,支持: 170 | > 171 | > - 中英文直接匹配 172 | > - 中文每个字的拼音首字母匹配(这个很方便) 173 | > image 174 | 175 | 2、按扫描加入时间 176 | 177 | image 178 | 179 | >【个人场景分享】 180 | > 181 | > 最近加入的新歌,可以优先显示在前面,方便欣赏新歌 182 | 183 | ## 下一首播放 184 | > 类似“插队”,插入/移动到当前播放列表的下一首位置 185 | 186 | image 187 | image 188 | 189 | >【个人场景分享】 190 | > 191 | > 类似卡拉OK的置顶,接下来想听什么歌就点它 192 | 193 | ## 添加播放列表、添加到播放列表 194 | 195 | image 196 | image 197 | image 198 | image 199 | image 200 | 201 | > 可以直接添加到已经存在的播放列表 202 | > 203 | > 也可以添加播放列表后再添加到播放列表 204 | 205 | ## 支持英文 206 | 207 | image 208 | 209 | ## 显示音质标签 210 | 211 | 码率是根据文件大小和时长模拟计算的: 212 | 213 | > Hi-Res: 码率>= 9216 214 | > 215 | > CD: 码率>= 1411 216 | > 217 | > SQ: 码率>= 320 218 | > 219 | > HQ: 码率>= 192 220 | > 221 | > 标准: 码率>= 128 222 | > 223 | > 流畅: 码率< 128 224 | 225 | image 226 | 227 | image 228 | 229 | ## 其它小细节 230 | 231 | - 播放的时候持续亮屏的 232 | - 快速定位当前播放歌曲的列表位置 233 | - 交互有震动 234 | - 列表中正在播放的歌曲高亮会微微闪烁 235 | - 播放失败,大概就是音频文件有损坏,会显示并通知提醒你 236 | - 隐藏状态栏 237 | ... 238 | -------------------------------------------------------------------------------- /README.original.md: -------------------------------------------------------------------------------- 1 | # T Music Player(TMPlayer) 2 | 3 | [阶段性功能补充说明](https://github.com/xachary/t_music_player/blob/master/README%20-%20v0.12.2.md) 4 | 5 | 喜欢请送我一个Star吧! 6 | 7 | 喜欢请送我一个Star吧! 8 | 9 | 喜欢请送我一个Star吧! 10 | 11 | launcher_icon 12 | 13 | 这是一款完全离线的【安卓】音乐播放器App,适用于追求纯粹听歌体验的朋友们。如果你有自己的音乐文件库,本应用也许适合你。 14 | 15 | [APK免费下载](https://github.com/xachary/t_music_player/releases) 16 | 17 | 播放自己的音乐库,再也不需要联网、不需要看一堆广告、不需要看一堆个性化推荐。。。 18 | 19 | ![Screenshot](https://github.com/user-attachments/assets/35573171-cadb-4a47-bf2e-e2c05ee6b56a) 20 | 21 | image 22 | 23 | ![Screenshot_2025-08-25-17-12-12-11_a17349a9ab8e7918c0ec2c3decfbc1da_副本](https://github.com/user-attachments/assets/c389b608-fc71-4ad9-ba8e-bfa62705aceb) 24 | 25 | ![Screenshot_2025-08-25-17-04-52-81_a17349a9ab8e7918c0ec2c3decfbc1da_副本](https://github.com/user-attachments/assets/a6a3700d-2099-4d97-8566-5db6edd60173) 26 | 27 | 28 | 应用市场上架太麻烦了,又要认证、软著、备案、隐私协议等等流程和费用。 29 | 30 | 本App只是一个以非盈利为目的,满足了个人欣赏音乐的需要开发的简单App。 31 | 32 | 既然做出来了,自己独享有点可惜,所以就分享出来! 33 | 34 | ## 选择扫描目录 35 | 为了扫描歌曲目录,建立音乐库、读取歌曲封面,会需要2个权限: 36 | - 音频文件 37 | - 所有文件访问权限 38 | 39 | 为了支持蓝牙歌曲信息推送、断连停止播放,会需要1个权限: 40 | - 附近的设备 41 | 42 | ## 歌曲名和艺术家信息的识别 43 | 本应用直接通过文件名匹配,同路径下的同名图片可作为歌曲封面显示,规则如下: 44 | - 歌曲名 - 艺术家 45 | - 歌曲名 - 艺术家1&艺术家2&更多 46 | 47 | > 例如: 48 | > 49 | > ”11 - 邓紫棋.flac“ 50 | > 51 | > ”11 - 邓紫棋.webp“ -- 可选,存在就作为封面显示 52 | > 53 | > 歌曲名:”11“ 54 | > 55 | > 艺术家:”邓紫棋“ 56 | > 57 | > ”Easy Come Easy Go - 蔡健雅&MC HotDog.mp3“ 58 | > 59 | > ”Easy Come Easy Go - 蔡健雅&MC HotDog.jpg“ -- 常用的图片格式都可以 60 | > 61 | > 歌曲名:”Easy Come Easy Go“ 62 | > 63 | > 艺术家:”蔡健雅;MC HotDog“ 64 | 65 | ## 通用排序规则 66 | 从 A 到 z 排序。针对中文歌曲名,则以每个字的拼音首字母从 A 到 z 排序。 67 | 68 | ## 播放列表 69 | 本应用支持 3 种播放列表:[全部歌曲](#全部歌曲)、[艺术家和歌曲](#艺术家和歌曲)、[心动歌曲](#心动歌曲)。 70 | 71 | > ### 全部歌曲 72 | > 支持首字母快速定位,支持英文首字母、拼音首字母;支持关键字筛选。 73 | > 74 | > ### 艺术家和歌曲 75 | > 定位、筛选规则与[全部歌曲](#全部歌曲)一样,先选艺术家,后选歌曲。特别说明,多艺术家歌曲(其实就是合唱歌曲),满足上面[歌曲名和艺术家信息的识别](#歌曲名和艺术家信息的识别)规则的情况下,会拆分为多个艺术家显示,均能定位到该歌曲。 76 | > > 例如: 77 | > > 78 | > > ”Easy Come Easy Go - 蔡健雅&MC HotDog.mp3“ 79 | > > 80 | > > 将会出现2个艺术家 81 | > > - 蔡健雅 82 | > > - MC HotDog 83 | > > 84 | > > 无论进入哪一位艺术家的歌曲列表,都会出现”Easy Come Easy“这个歌曲。 85 | > > 86 | > ### 心动歌曲 87 | > 歌曲有一个评分,暂称为【心动指数】,评分越高,排名越前。 88 | > 89 | > 具体规则如下: 90 | > 91 | > 1、~~主动从歌曲列表中选择的歌曲,评分+1;~~ 92 | > 93 | > 1、在播放界面中,点击左下角评分按钮后,评分+1; 94 | > 95 | > 2、主动切歌~~到上/下一歌曲~~/选歌,并听~~完整首歌曲~~到最后30秒,评分+1。 96 | > 97 | > 3、当前歌曲播放前 15 秒切走该歌曲,评分-1; 98 | > 99 | > 4、点击播放列表中歌曲的更多按钮,点击【重置心动指数】可以清零。 100 | 101 | ## 播放模式 102 | 包含循环模式、重复模式、[随机模式](#随机模式)。 103 | 104 | > ### 随机模式 105 | > 在设置页中,可以设置【随机播放不重复】的数量,默认是 100 首,也就说,随机模式下切歌最近 100 首内不会出现重复的歌曲。 106 | 107 | ## 延时停止播放 108 | 支持2小时以内延时停止播放,支持播放完当前歌曲再停止。 109 | 110 | ## 导出/导入心动数据 111 | 心动数据可以备份和转移;另外,重新扫描目录,原来的心动数据不会丢失。 112 | 113 | ## 最后 114 | 本应用暂时只有安卓端。 115 | 116 | > 未来。。。也许会支持。。。 117 | 118 | ## 版本日志 119 | 120 | ### v0.12.4 121 | 122 | 新增:播放倍速修改功能 123 | 124 | ### v0.12.2 125 | 126 | 修复: 127 | - A-B模式边界判断有误 128 | - 移除不该出现的输入法弹窗 129 | 130 | 新增: 歌手后面显示心动数字 131 | 132 | ### v0.12.1 133 | 134 | 修复: 优化A-B的进度条约束 135 | 136 | ### v0.12.0 137 | 138 | 新增: A-B区间播放功能 139 | 140 | 调整: 移除播放界面的心动按钮 141 | 142 | ### v0.11.5 143 | 144 | 修复: 145 | - 扫描时隐藏表单 146 | - 心动指数刷新异常 147 | 148 | 新增: 新增心动指数加分菜单 149 | 150 | ### v0.11.3 151 | 152 | 新增:搜索清空按钮 153 | 154 | 修复: 输出损坏歌曲的艺术家 155 | 156 | ### v0.11.2 157 | 158 | 修复: 多字拼音准确性 159 | 160 | ### v0.11.1 161 | 162 | 优化: 避免特定交互下输入法遮挡问题 163 | 164 | ### v0.11.0 165 | 166 | 优化: 文件损坏识别逻辑 167 | 168 | 新增:播放列表支持2种排序:标题 - 正序、添加时间 - 倒序 169 | 170 | 修复:数据导入异常 171 | 172 | ### v0.10.6 173 | 174 | 新增: 播放中的列表文字渐变动态 175 | 176 | 修复: 多余的定位逻辑 177 | 178 | ### v0.10.5 179 | 180 | 新增:支持切换系统的固定模式 181 | 182 | 优化:播放按钮、操作按钮位置 183 | 184 | ### v0.10.4 185 | 186 | 优化:统一更多按钮的操作及其各状态同步 187 | 188 | ### v0.10.3 189 | 190 | 新增: 191 | - 当前播放列表显示定位 192 | - 列表定位当前歌曲的按钮 193 | - 列表显示歌手 194 | 195 | ### v0.10.1 196 | 197 | 新增: 198 | - 播放过的歌曲时长更新和显示 199 | - 生成随机当前播放列表、显示随机列表 200 | - 当前播放列表独立,可插入(下一首播放)歌曲、移除歌曲 201 | 202 | 修复: 203 | - 扫描进度有误 204 | - 补充点击震动 205 | 206 | 优化: 207 | - 优化信息显示、按钮位置 208 | - 优化列表按钮位置、图标 209 | - 状态化艺术家、播放列表的歌曲列表 210 | - 优化歌曲列表弹出卡顿 211 | - 文件损坏播放终止,提示损坏位置 212 | 213 | 调整: 214 | - 移除随机播放设置项 215 | - 当前播放列表不再显示播放列表名称(因为当前播放列表可以编辑) 216 | 217 | ### v0.9.2 218 | 219 | 新增: 支持3种匹配歌曲信息 220 | - 歌曲名 - 艺术家1;艺术家2 221 | - 艺术家1;艺术家2 - 歌曲名 222 | - ID3(前2种方式识别失败后都会尝试 ID3 方式) 223 | 224 | ### v0.8.8 225 | 226 | 修复: 横屏时摄像头遮挡按钮 227 | 228 | ### v0.8.7 229 | 230 | 修复: 播放模式横竖切换状态丢失 231 | 232 | ### v0.8.6 233 | 234 | 优化:替换通知组件 235 | 236 | ### v0.8.5 237 | 238 | 修复: 切换横竖的时候恢复列表状态 239 | 240 | 调整: 歌曲列表切换歌曲关闭窗口 241 | 242 | 调整: 歌曲列表切换歌曲关闭窗口 243 | 244 | 调整: 调整心动加分逻辑 245 | > 主动切歌不马上加分,至少听到最后30秒。 246 | 247 | ### v0.8.3 248 | 249 | 修复: 按钮颜色不一致 250 | 251 | ### v0.8.2 252 | 253 | 新增: 播放页面补充添加到播放列表按钮 254 | 255 | ### v0.8.1 256 | 257 | 修复: 修复播放列表导入异常 258 | 259 | ### v0.8.0 260 | 261 | 新增:自定义播放列表 262 | > 自定义播放列表及其歌曲可以长按调整顺序 263 | 264 | image 265 | 266 | 新增:feat: 播放15秒后,上一首操作使歌曲重新播放。 267 | 268 | 优化:优化、修复若干细节 269 | 270 | ### v0.7.9 271 | 272 | 优化: 重构歌曲、艺术家列表,更好适配横屏 273 | 274 | 修复: 艺术家列表样式异常 275 | 276 | ### v0.7.8 277 | 278 | 修复: 列表按钮位置横屏异常 279 | 280 | ### v0.7.7 281 | 282 | 修复: 单向播放结束后切换状态 283 | 284 | ### v0.7.6 285 | 286 | 图标更新 287 | 288 | ### v0.7.5 289 | 290 | 修复: 修正关键词匹配,支持拼音首字母匹配 291 | 292 | 修复: 首次进入App扫描目录后没有刷新歌曲列表 293 | 294 | 新增: 通知栏推送播放失败情况,播放失败后自动播放下一首 295 | 296 | 修复: 应用图标异常 297 | 298 | ### v0.7.2 299 | 300 | 修复:隐藏工具栏不稳定 301 | 302 | ### v0.7.1 303 | 304 | 新增:播放页长按心动按钮可以重置该歌曲 305 | 306 | ### v0.7.0 307 | 308 | 新增:轻度适配横屏模式 309 | 310 | 新增:清空数据入口 311 | 312 | 新增:支持中英文切换 313 | 314 | 调整:一些提示和文案调整 315 | 316 | ![Screenshot_2025-08-25-17-12-12-11_a17349a9ab8e7918c0ec2c3decfbc1da_副本](https://github.com/user-attachments/assets/c389b608-fc71-4ad9-ba8e-bfa62705aceb) 317 | 318 | ![Screenshot_2025-08-25-17-04-52-81_a17349a9ab8e7918c0ec2c3decfbc1da_副本](https://github.com/user-attachments/assets/a6a3700d-2099-4d97-8566-5db6edd60173) 319 | 320 | ### v0.6.0 321 | 322 | 新增:单向播放模式 323 | 324 | ### v0.5.5 325 | 326 | 优化:更细的定时间隔 327 | 328 | 优化:提示损坏的歌曲名 329 | 330 | ### v0.5.4 331 | 332 | 修复:定时停止播放出现误判文件损坏 333 | 334 | ### v0.5.3 335 | 336 | 修复:首字母定位支持数字 337 | 338 | ### v0.5.2 339 | 340 | 优化:重构音乐库列表显示,移除心动列表的播放时间的显示 341 | 342 | 优化:首字母快速定位栏高亮当前字母 343 | 344 | ![Aug-22-2025 17-15-18](https://github.com/user-attachments/assets/68d58ad3-31fb-47bf-a2ca-58196d821bd8) 345 | 346 | ### v0.4.5 347 | 348 | 修复: 播放列表滚动优化 349 | 350 | 优化: 高亮正在播放歌曲 351 | 352 | ### v0.4.1 353 | 354 | 修复:减少重复的音频文件损坏报错 355 | 356 | 新增:匹配并显艺术家示头像 357 | 358 | > 在扫描目录下,新建一个名为 Artists 的目录(注意大小写),头像图片文件以艺术家命名,支持 webp/jpg/jpeg/png(推荐在 Apple Music 提取 webp 图片),例如: 359 | > 360 | > 蔡依林.webp 361 | > 周杰伦.webp 362 | 363 | ![Screenshot_2025-08-20-17-20-08-89_a17349a9ab8e7918c0ec2c3decfbc1da_副本](https://github.com/user-attachments/assets/f520028c-ea55-41f5-bf99-22cedd731b63) 364 | 365 | image 366 | 367 | ### v0.3.3 368 | 369 | 修复:错误/损坏音频文件导致崩溃,识别并提示 370 | 371 | - 错误的音频文件,导致播放失败 372 | - 损坏的音频文件,导致播放终止 373 | 374 | image 375 | 376 | 优化:播放页面隐藏状态栏 377 | 378 | ### v0.3.2 379 | 380 | 修复: 随机算法边界处理 381 | 382 | ### v0.3.1 383 | 384 | 修复: 权限请求兼容就安卓版本 385 | 386 | 优化: 兼容一下较低分辨率 387 | 388 | 修复: 优化随机算法 389 | 390 | 新增: 支持逐行歌词文件 391 | 392 | ![Screenshot_2025-08-19-11-28-05-23_a17349a9ab8e7918c0ec2c3decfbc1da_副本](https://github.com/user-attachments/assets/76027468-cabc-475c-acd4-057560bd366f) 393 | 394 | 致敬这个棒棒的歌词下载工具:[LDDC](https://github.com/chenmozhijin/LDDC) 395 | 396 | ### v0.2.1 397 | 398 | 新增: 主动切歌后在该歌曲结束前30秒切歌也能加分 399 | 400 | 新增: 底栏播放按钮效果 401 | 402 | ![Screenshot_2025-08-17-08-43-26-98_1814146aa54f3461d48406888cea7a6a_副本](https://github.com/user-attachments/assets/bb3e2c0a-485d-4e89-8728-05c68017a318) 403 | 404 | 新增: 封面改为扫描时识别、列表增加封面的显示 405 | 406 | ![Screenshot_2025-08-17-08-45-08-89_1814146aa54f3461d48406888cea7a6a_副本](https://github.com/user-attachments/assets/1b417d46-99bb-47eb-a5fd-50ca2bcdf0f1) 407 | 408 | 修复:减少卡顿 409 | 410 | ### v0.1.1 411 | 412 | 修复: 艺术家歌曲列表快速定位异常、无效的定时设置。 413 | 414 | 新增: 按钮添加震动、定时显示倒计时。 415 | 416 | ### v0.1.0 417 | 418 | 首次发布版本:v0.1.0 419 | --------------------------------------------------------------------------------