├── 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 |
30 |
31 | > 【个人场景分享】
32 | >
33 | > 把手机、平板架起来摆放听歌,尤其是开车蓝牙连接、洗澡的时候。
34 | >
35 | > (垃圾车机,只能一直用手机蓝牙连接听歌😭)
36 |
37 | ## 支持系统媒体播放信息同步
38 |
39 | 1、手机
40 |
41 |
42 |
43 | 2、手表
44 |
45 |
46 |
47 | 3、车机
48 | > 类似“手表”
49 |
50 | ## 支持开启系统的固定应用模式
51 |
52 |
53 |
54 |
55 |
56 | > 【个人场景分享】
57 | >
58 | > 把歌曲换成故事、儿歌,开启系统固定应用模式后,小朋友只能操作当前App,用于听故事、儿歌,不能沉迷游戏😊。
59 | >
60 | > 也可以防止猪朋狗友乱翻手机,哈哈。
61 |
62 | ## 四种歌曲列表
63 |
64 | 1、全部
65 |
66 |
67 |
68 | > 目前自用1100多首歌,算上封面、歌词文件,总的3000多个文件,还行吧,不算太卡哈。
69 |
70 | 2、按歌手
71 |
72 |
73 |
74 |
75 | 3、心动歌曲
76 |
77 |
78 |
79 | > 【个人场景分享】
80 | >
81 | > 我认为,最近真正喜欢一首歌:
82 | >
83 | > - 会主动选择播放它并听完
84 | > - 切歌切到它,也会听完
85 | >
86 | > 我认为,最近对一首歌兴趣减弱了:
87 | >
88 | > - 不会选择播放它
89 | > - 切歌切到它,会很快切走它
90 | >
91 | > 基于上面个人的见解,给歌曲加减分并排序,形成一个歌曲列表
92 |
93 | 4、自定义播放列表
94 |
95 |
96 |
97 |
98 | > 【个人场景分享】
99 | >
100 | > 开车蓝牙连接听歌,可以给特定的人准备播放列表
101 | >
102 | > 最近需要练习一些歌曲,无论是唱歌、跳舞,自定义播放列表还是很有必要的
103 |
104 | ## 本地音频文件三种匹配规则
105 |
106 | 1、歌曲名 - 艺术家1&艺术家2
107 |
108 |
109 |
110 | > 一开始,我是习惯用这种方式,通过艺术家命名文件夹,整理自己的音乐库的
111 |
112 | 2、艺术家1&艺术家2 - 歌曲名
113 |
114 |
115 |
116 | > 后来发现,用这种命名方式,一股脑都放到一个目录里,更适合懒人习惯,也挺好
117 |
118 | 3、ID3
119 |
120 | > 音频文件元数据,也是作为兜底的匹配方式
121 |
122 | ## 本地艺术家头像匹配
123 |
124 |
125 |
126 | > 支持常见的图片格式
127 |
128 | ## 四种播放顺序
129 |
130 | - 当前播放列表循环
131 | - 当前播放列表顺序
132 | - 随机
133 | - 单曲循环
134 |
135 | >【个人场景分享】
136 | >
137 | > 打开应用,首先出现的就是“随机播放”按钮,个人习惯,因为选择困难
138 | >
139 | >
140 |
141 | ## 延时停止播放
142 |
143 |
144 |
145 |
146 | >【个人场景分享】
147 | >
148 | > 习惯了睡前戴一只蓝牙耳机,听音乐催眠
149 |
150 | ## A-B区间循环播放
151 |
152 |
153 |
154 |
155 | >【个人场景分享】
156 | >
157 | > 可以用于歌曲练习,无论是唱歌、跳舞,可以重复训练
158 |
159 | ## 两种排序
160 |
161 | 1、按标题
162 |
163 |
164 |
165 | > 【个人场景分享】
166 | >
167 | > 按英文、拼音首字母快速定位
168 | >
169 | > 另外,这里的搜索,支持:
170 | >
171 | > - 中英文直接匹配
172 | > - 中文每个字的拼音首字母匹配(这个很方便)
173 | >
174 |
175 | 2、按扫描加入时间
176 |
177 |
178 |
179 | >【个人场景分享】
180 | >
181 | > 最近加入的新歌,可以优先显示在前面,方便欣赏新歌
182 |
183 | ## 下一首播放
184 | > 类似“插队”,插入/移动到当前播放列表的下一首位置
185 |
186 |
187 |
188 |
189 | >【个人场景分享】
190 | >
191 | > 类似卡拉OK的置顶,接下来想听什么歌就点它
192 |
193 | ## 添加播放列表、添加到播放列表
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 | > 可以直接添加到已经存在的播放列表
202 | >
203 | > 也可以添加播放列表后再添加到播放列表
204 |
205 | ## 支持英文
206 |
207 |
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 |
226 |
227 |
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 |
12 |
13 | 这是一款完全离线的【安卓】音乐播放器App,适用于追求纯粹听歌体验的朋友们。如果你有自己的音乐文件库,本应用也许适合你。
14 |
15 | [APK免费下载](https://github.com/xachary/t_music_player/releases)
16 |
17 | 播放自己的音乐库,再也不需要联网、不需要看一堆广告、不需要看一堆个性化推荐。。。
18 |
19 | 
20 |
21 |
22 |
23 | 
24 |
25 | 
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 |
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 | 
317 |
318 | 
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 | 
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 | 
364 |
365 |
366 |
367 | ### v0.3.3
368 |
369 | 修复:错误/损坏音频文件导致崩溃,识别并提示
370 |
371 | - 错误的音频文件,导致播放失败
372 | - 损坏的音频文件,导致播放终止
373 |
374 |
375 |
376 | 优化:播放页面隐藏状态栏
377 |
378 | ### v0.3.2
379 |
380 | 修复: 随机算法边界处理
381 |
382 | ### v0.3.1
383 |
384 | 修复: 权限请求兼容就安卓版本
385 |
386 | 优化: 兼容一下较低分辨率
387 |
388 | 修复: 优化随机算法
389 |
390 | 新增: 支持逐行歌词文件
391 |
392 | 
393 |
394 | 致敬这个棒棒的歌词下载工具:[LDDC](https://github.com/chenmozhijin/LDDC)
395 |
396 | ### v0.2.1
397 |
398 | 新增: 主动切歌后在该歌曲结束前30秒切歌也能加分
399 |
400 | 新增: 底栏播放按钮效果
401 |
402 | 
403 |
404 | 新增: 封面改为扫描时识别、列表增加封面的显示
405 |
406 | 
407 |
408 | 修复:减少卡顿
409 |
410 | ### v0.1.1
411 |
412 | 修复: 艺术家歌曲列表快速定位异常、无效的定时设置。
413 |
414 | 新增: 按钮添加震动、定时显示倒计时。
415 |
416 | ### v0.1.0
417 |
418 | 首次发布版本:v0.1.0
419 |
--------------------------------------------------------------------------------