V1.3.3: 移除点击时的纯色遮罩层 + App 音量默认值改为 85%

1) 纯色遮罩层: TvFocusStyler.install() 会把背景整体换成不透明的红→橙渐变作为
   焦点/按下反馈, 而 prepareTvFocusableTree(window.decorView) 会遍历整棵树施加。
   按钮/Tab/卡片需要该反馈, 但铺满屏幕或覆盖播放画面的「表面型」View 一旦被套上,
   触摸一次(state_pressed)就会用纯色盖住整屏内容。
   新增 TvFocusStyler.suppressFill(view, focusable) 显式排除:
   - 播放触摸层 playerTouchOverlay(浮在播放画面上方, 主要元凶; 传 focusable=false
     保持其 isFocusable=false, 不再抢遥控器焦点)
   - 全屏播放容器 R.id.container、启动加载遮罩 databaseLoadingOverlay
   - 手机点歌二维码浮层(首页右下 + 全屏右上)、全屏音量面板
   - 原 preserveBackground 更名为 suppressFill(播放画面宿主/海报沿用)
   同时 install() 对已标记的 View 直接跳过, 不再替调用方强制可聚焦。

2) App 音量默认 85%: 新增 KtvStore.DEFAULT_MUSIC_VOLUME 作为唯一来源,
   KtvStore 字段默认值与 optInt 兜底、MainActivity.musicVolume 初值、
   调音弹窗「默认」按钮(原 80)统一引用; 远程页面 assets/mobile 默认值同步为 85。

版本号 1.3.2 -> 1.3.3(versionCode 8 -> 9)。按约定本次不发布 Release, 仅本地打包测试。
This commit is contained in:
zijunchiang
2026-09-14 03:37:17 +08:00
parent 0549f910a6
commit 4eb6b7b382
7 changed files with 72 additions and 18 deletions
+10 -2
View File
@@ -15,7 +15,7 @@ class KtvStore {
@JvmField var autoNext = true
@JvmField var originalVocal = true
@JvmField var vocalChannelMode = "自动"
@JvmField var musicVolume = 70
@JvmField var musicVolume = DEFAULT_MUSIC_VOLUME
@JvmField var micVolume = 70
@JvmField var tone = 0
@JvmField var atmosphere = "标准"
@@ -64,7 +64,7 @@ class KtvStore {
autoNext = root.optBoolean("autoNext", true)
originalVocal = root.optBoolean("originalVocal", true)
vocalChannelMode = root.optString("vocalChannelMode", "自动")
musicVolume = root.optInt("musicVolume", 70)
musicVolume = root.optInt("musicVolume", DEFAULT_MUSIC_VOLUME)
micVolume = root.optInt("micVolume", 70)
tone = root.optInt("tone", 0)
atmosphere = root.optString("atmosphere", "标准")
@@ -203,6 +203,14 @@ class KtvStore {
private fun toggleId(ids: MutableSet<String>, id: String): Boolean = if (ids.remove(id)) false else ids.add(id)
companion object {
/**
* App 内部输出音量默认值(%)。
*
* 三处音量入口(播放界面-调音、声音设置-歌曲最大音量、远程控制-音乐音量)共用它;
* 远程页面 `assets/mobile/{index.html,app.js}` 里的默认值需与之保持一致。
*/
const val DEFAULT_MUSIC_VOLUME = 85
@JvmStatic
fun stableId(song: Song): String = song.id?.takeIf(String::isNotEmpty)
?: song.path?.takeIf(String::isNotEmpty)