Skip to content

Releases

v0.8.6:沉浸模式防误触、自建歌单与喜爱、可下载界面字体

Choose a tag to compare

@Schweik7 Schweik7 released this 14 Sep 15:54

沉浸模式防误触

关掉触摸进入沉浸模式后,两根摇杆(含按下右摇杆)和 L / R / ZL / ZR 全部锁定,手持时手掌、指根怎么蹭都不会跳进度或翻页。只留**按下左摇杆(LS)**用来退出。底栏提示在沉浸模式下也换成了对应的一套。

另外去掉了两处平时也容易误触的键位:

  • 左摇杆上下不再调音量:Switch 机身自带音量键;摇杆上再放一份,推左右逐秒进退时会被斜向带出来。歌词区左上角的 +/− 格子保留,给触摸用
  • 右摇杆左右不再拖进度:推右摇杆上下翻歌词时很难推得笔直。拖进度还有 ZL/ZR、左摇杆左右和触摸进度条

自建歌单与「我喜欢的音乐」

播放列表界面改成左右两栏:左边是「正在播放」和自建歌单,右边是选中那一项里的曲目。

  • 新建歌单:可选摇滚、流行、安静、古典、民谣、电子等预设分类,或用系统键盘自己起名
  • 我喜欢的音乐:固定的特殊歌单,按 Y 或点曲目行上的心形收藏 / 取消
  • X 打开更多操作:加入某个歌单、新建歌单并加入、从歌单移除;在歌单上按 X 是播放整个歌单 / 删除
  • 从歌单里点一首,整个歌单就成为播放队列;之后往这个歌单里加歌、删歌会同步到正在播放的队列
  • 歌单存在 sdmc:/config/MusicPlayer2/playlists/,格式与桌面版相同,喜爱沿用桌面版的 favourite.playlist,拷到电脑上能直接用

顺带修了一个旧问题:从某个歌单切到「播放整个目录」之后,下次启动恢复的仍是那个旧歌单。

可下载的界面字体

设置 → 界面字体。内置霞鹭文楷,另有一份放在服务器上的字体列表(加减字体不用发版)。

  • 按 A:已下载的直接切换,没下载的先下载、下完自动换上
  • 切换即时生效,不用重启;字体缓存在 sdmc:/config/MusicPlayer2/fonts/,X 删除不要的
  • 字体文件损坏或解析失败时保留原来的字体,不会变成一个字都画不出来
  • Switch 系统字体始终留作缺字时的兜底;老办法(往数据目录放 font.ttf)仍然有效

图标没有变化,用 sphaira 装了前端的话不需要重装。

主机测试 932 条断言全绿(新增歌单与字体清单的测试,重点覆盖非法歌单名和清单里的路径穿越),Switch 全量重建零警告。

v0.8.5:更新只需重启一次;设置列表可滚动

Choose a tag to compare

@Schweik7 Schweik7 released this 09 Sep 05:42

修复:更新原来要重启两次

下载完退出再进,仍然提示「发现新版本,重启后更新」,得再关一次、重新启动才真正生效。

原因是替换动作放在启动时。但 NRO 在应用代码跑起来之前就已经被整个读进内存了——那一趟启动跑的仍然是旧版本,只是顺手把磁盘上的文件换掉,所以它的更新检查照样报「有新版本」。

改成在退出时替换(romfsExit() 之后,那时文件不再被 romfs 按住)。下一次启动读到的就已经是新的,只需重启一次。

启动时的那次替换保留为兜底,处理「上次没走到退出」的情形:崩溃、被强杀、或者退出时改名失败。

从 0.8.4 更新到本版时仍然是旧的两步流程(做替换的永远是旧版本的代码)。装上 0.8.5 之后,以后的更新就都只需重启一次了。

设置列表可以滚动了

底部状态区改成固定高度,列表用剩下的部分。

以前是反过来的:列表铺完剩多少算多少,于是每加一个设置项就把下载进度往下挤一点,直到挤出屏幕。这个问题前后出现过三次,每次都靠「再删两个设置项」缓解——根因是可用高度由项数决定,而不是项数去适应可用高度。

  • 超出一屏的部分靠滚动看到,手指拖动带惯性(和播放列表、文件浏览同一套)
  • 方向键移动时自动把选中项带进可视区
  • 有内容在屏幕外时才画滚动条
  • 滚出可视区的行不参与命中判定,不会在原来的位置上被误触

文案

中文的「关闭(存同级目录)」说明恢复了——中文窄,放得下。挤到标签的一直是英文,同一个键在译文表里给短短一个 Off 就够了。


图标没有变化,用 sphaira 装了前端的话不需要重装。

主机测试 820 条断言全绿,Switch 全量重建零警告。

v0.8.4:修复时间慢一个时区

Choose a tag to compare

@Schweik7 Schweik7 released this 09 Sep 05:27

修复:顶栏时间慢一个时区

港区(UTC+8)的机器上,应用里的时间比系统桌面慢 8 小时——不是随机偏差,正好是一整个时区。

原因是取时间的方式建立在一个不成立的前提上:代码读 TimeType_LocalSystemClock 并当作本地时间用,但实机上它返回的是 UTC。桌面显示正确,是因为 HOME 走的是系统的时区规则,而我们绕过了那一步。

改成取 UTC 时间戳,交给 timeToCalendarTimeWithMyRule() 按主机设置的时区规则换算——和 HOME 同源,夏令时也一并算好。

diag.log 里新增一行时区(时区 : HKT UTC+8.00 小时)。时间不对时,光看年月日时分分不清是时钟没校准还是时区没套上,这两者的处理办法完全不同。

修复:英文界面还有中文残留

顶栏的「正在播放」「设置」、星期几,以及「播放列表」「浏览 SD 卡」「在线下载」「网易云音乐」「QQ音乐」,在英文模式下仍显示中文。两个不同的原因:

  • 各界面的标题是内联在头文件里的,上一版的翻译只覆盖了 .cpp
  • 星期数组是命名空间作用域的常量,初始化发生在 main 之前——那时语言设置还没读取,语言被永久冻结在中文

界面

「下载歌词封面后嵌入歌曲文件」这一项的值收成是 / 否。这一项标签本来就长,英文更长,值再带一段解释就会和标签叠上。存到哪里的说明留在切换时的提示里。


图标没有变化,用 sphaira 装了前端的话不需要重装,直接在应用内更新即可。

主机测试 820 条断言全绿,Switch 全量重建零警告。

v0.8.3:图标加 Switch 角标,顶栏对齐

Choose a tag to compare

@Schweik7 Schweik7 released this 09 Sep 04:32

图标

绿色圆环的右下角多了一台倾斜的 Switch(左蓝右红的官方配色),标明这是 Switch 特色版。

顶栏对齐

顶栏原来每样东西各写各的纵坐标(22 / 26 / 27 / 30),字号一不同就参差不齐。现在全部按同一条中线垂直居中——左边的「设置 / 列表 / 触摸」和右边的时钟、电量,落在同一行高度上。

中间那行字(正在播放 等)原来钉在屏幕正中,这是重叠的来源:左簇比右簇宽,而且曲目一多(128 / 647)左簇还会继续往右长,迟早压到标题上。改成在左右两簇之间的空当里居中,两边留白自动均等,也顺带整体右移了。

兜底是按文字的实际宽度算,不是按中心点:空当放不下这行字时,只判断中心点会让左半边照样压上去。

放到 HOME 界面上

想让它和游戏并排出现在 HOME 界面、不必每次长按 R 进 hbmenu,用 sphaira 给这个 NRO 生成一个前端启动即可,在机器上就能做完。装好的图标本身不含播放器,只负责加载 SD 卡上的 NRO,所以之后更新播放器只换 MusicPlayer2.nro,图标不用重装。

本项目不自带这个功能:sphaira 已经做好了,而且对任何 NRO 都通用。


主机测试 820 条断言全绿,Switch 全量重建零警告。

v0.8.2:界面语言、设置列表瘦身

Choose a tag to compare

@Schweik7 Schweik7 released this 09 Sep 04:18

界面语言:简体中文 / English

设置里多了一项「语言」,即时生效。

这一项的值刻意不翻译,永远显示各语言自己的名字(简体中文 / English)——万一切到看不懂的语言,也还认得出怎么切回来。

实现上用中文原文本身当键,而不是另起一套 STR_XXX 符号。好处是缺翻译时自动退回中文:漏一条只是那一处显示中文,不会变成空白或 STR_1234。

设置列表瘦身

去掉了「触摸操作」和「双语歌词排版」两项。不是砍功能——这两件事在界面上都已经有常驻入口:

  • 触摸开关:顶栏那个按钮(另有 LS)
  • 单栏 / 双栏:歌词区工具排上的 1C/2C 按钮(另有 R)

触摸和按键两条路都齐了,设置里那份就是纯冗余。列表短两行,底部的下载进度重新落回可视区——这个问题反复出现过,根因是设置项只增不减。

文案

  • 「下载后写入歌曲文件」→「下载歌词封面后嵌入歌曲文件」
  • 「关闭(只存旁边)」→「关闭(存同级目录)」

译文表带自检,主机端测试会跑:printf 的格式说明符必须逐个对应(漏一个 %s 是崩溃,不是显示问题),底栏提示按 | 的分段数必须一致(排版按段数均分间距)。

主机测试 820 条断言全绿,Switch 全量重建零警告。

v0.8.1:电量图标、顶栏归位、浅色配色

Choose a tag to compare

@Schweik7 Schweik7 released this 09 Sep 03:18

顶栏

右上角新增电量图标 —— 外框 + 电量条 + 数字。数字不带百分号,图标本身已经说明了这是电量。低于 20% 转红,充电中转绿。位置和 Switch 系统界面一致,放在时钟右边。

触摸开关挪到左侧,和「设置」「列表」排成一排:

左:[←] MusicPlayer2 [设置][列表][触摸 开]  4 / 647
右:                     09/08 周二 16:20  [▮▮▮ 85]

它们本来就是同一类东西——常驻的、点一下就生效的入口。摆在右上角既和时钟抢位置,也容易被当成状态显示而不是按钮。

新增浅色配色

设置里多了一项「配色」,深色 / 浅色切换,即时生效。

浅色不是把深色取反,有几处必须单独调:强调蓝要压深(浅底上的亮蓝看不清);给按下 / 选中的按钮当背景的那档颜色要反过来变成淡蓝底,因为上面压的是深色文字;琥珀色的高亮要压到棕橙,否则和白底糊在一起。

歌词区背景图上那层遮罩原来写死成深色(用途是保证白色歌词的对比度),浅色下会把深色歌词盖没,已改成跟着主题背景色走。


电量走 psm 服务,每次查询都是一次 IPC,60fps 下每帧问一次纯属浪费,所以按 5 秒一次刷新、中间返回缓存 —— 电量分辨率本来就是 1%,掉 1% 要好几分钟。

主机测试 796 条断言全绿,Switch 全量重建零警告。

v0.8.0:独立仓库

Choose a tag to compare

@Schweik7 Schweik7 released this 08 Sep 16:39

移植版搬到了自己的仓库:Schweik7/MusicPlayer2-Switch

原来它住在上游 MusicPlayer2 的 fork 里的一个子目录中。但它不依赖桌面版的任何源文件——
上游是一个 MFC 的 Windows 工程,把 devkitPro 工具链塞进去对双方都是负担。
独立之后也才有自己的 Release 和 issue 区。

历史用 git subtree split 保留,25 个提交原样带过来,并补上了 GPL-3.0 许可证
(移植版是上游的衍生作品)。

对已安装版本的影响

没有。 装在你机器上的 0.7.x 查的还是旧仓库,所以过渡期两个仓库都会发同一份 Release,
更新到 0.8.0 之后就自动跟着换到新仓库了。

备用源不受影响——它按 URL 取,和仓库无关。


主机测试 796 条断言全绿,Switch 全量重建零警告。