V1.3.2: 音量控制只作用于 App 内部输出, 不再修改系统音量
三处入口全部收敛到 applyPlaybackMode(): - 播放界面-调音(全屏音量面板 showFullScreenVolumeDialog() 与调音弹窗 showAudioControlDialog() 的音乐音量滑杆) - 声音设置-歌曲最大音量 - 远程控制-音乐音量(mobile PATCH /api/v1/player/audio -> remoteAudio()) musicVolume(0-100) 作为 App 内部输出音量, 按线性系数施加到主播放器 (KtvVideoView.setPlaybackVolume / selectAudioChannel)与副音轨播放器 (vocalPlayer / embeddedVocalEngine); 删除 applySystemMusicVolume() 及其 4 处调用, AudioManager.setStreamVolume / getStreamMaxVolume 已全部移除。 副作用修正: 原先 App 音量 70% 时既把系统音量压到 70%、又把播放器衰减到 70%, 实际响度只有约 49%(重复衰减); 现在只衰减一次, 100% 即 unity gain。 版本号 1.3.1 -> 1.3.2(versionCode 7 -> 8)。按约定本次不发布 Release, 仅本地打包测试。
This commit is contained in:
+2
-2
@@ -11,8 +11,8 @@ android {
|
||||
applicationId "com.local.ktv"
|
||||
minSdk 21
|
||||
targetSdk 25
|
||||
versionCode 7
|
||||
versionName "1.3.1"
|
||||
versionCode 8
|
||||
versionName "1.3.2"
|
||||
ndk {
|
||||
// 双 ABI 打包:兼容 64 位(Exynos 1580 等 arm64-v8a)与 32 位设备(极米 Play 超越版
|
||||
// 的 Amlogic 950X2/S905X2 采用 32 位 Android 用户态,必须包含 armeabi-v7a,否则
|
||||
|
||||
@@ -2474,7 +2474,7 @@ class MainActivity : AppCompatActivity() {
|
||||
indicator.alpha = 1f
|
||||
indicator.visibility = View.VISIBLE
|
||||
renderMuteButton()
|
||||
applySystemMusicVolume()
|
||||
// 只调 App 内部输出音量, 不改系统音量(见 applyPlaybackMode)。
|
||||
applyPlaybackMode()
|
||||
saveState()
|
||||
main.removeCallbacks(hideFullScreenVolumeIndicatorRunnable)
|
||||
@@ -2631,7 +2631,6 @@ class MainActivity : AppCompatActivity() {
|
||||
} else {
|
||||
musicVolume = muteBeforeVol
|
||||
}
|
||||
applySystemMusicVolume()
|
||||
applyPlaybackMode()
|
||||
seekMusicVol.setProgress(musicVolume)
|
||||
tvMusicVol.setText(musicVolume.toString())
|
||||
@@ -2667,7 +2666,6 @@ class MainActivity : AppCompatActivity() {
|
||||
|
||||
override fun onStartTrackingTouch(s: SeekBar?) {}
|
||||
override fun onStopTrackingTouch(s: SeekBar?) {
|
||||
applySystemMusicVolume()
|
||||
applyPlaybackMode()
|
||||
saveState()
|
||||
}
|
||||
@@ -2680,7 +2678,6 @@ class MainActivity : AppCompatActivity() {
|
||||
seekMusicVol.setProgress(80)
|
||||
micVolume = 60
|
||||
musicVolume = 80
|
||||
applySystemMusicVolume()
|
||||
applyPlaybackMode()
|
||||
saveState()
|
||||
tvMicVol.setText("60")
|
||||
@@ -4325,13 +4322,6 @@ class MainActivity : AppCompatActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
private fun applySystemMusicVolume() {
|
||||
if (audioManager == null) return
|
||||
val max = audioManager!!.getStreamMaxVolume(AudioManager.STREAM_MUSIC)
|
||||
val value = max(0, min(max, (musicVolume * max) / 100))
|
||||
audioManager!!.setStreamVolume(AudioManager.STREAM_MUSIC, value, 0)
|
||||
}
|
||||
|
||||
private fun clamp(value: Int, min: Int, max: Int): Int {
|
||||
return max(min, min(max, value))
|
||||
}
|
||||
@@ -5397,6 +5387,15 @@ class MainActivity : AppCompatActivity() {
|
||||
persistRuntimeState()
|
||||
}
|
||||
|
||||
/**
|
||||
* 应用原伴唱/声道与输出音量。
|
||||
*
|
||||
* 音量语义:`musicVolume`(0-100) 是 **App 内部输出音量**,按线性系数施加到播放器
|
||||
* (`KtvVideoView.setPlaybackVolume` / `selectAudioChannel`) 与副音轨播放器上,
|
||||
* **绝不修改系统音量**(不调用 `AudioManager.setStreamVolume`)。
|
||||
* 播放界面-调音、声音设置-歌曲最大音量、远程控制-音乐音量三处都收敛到这里,
|
||||
* 保证三条入口行为一致且都不影响系统音量。
|
||||
*/
|
||||
private fun applyPlaybackMode() {
|
||||
val videoPlayer = player ?: return
|
||||
videoPlayer.setTone(tone)
|
||||
|
||||
Reference in New Issue
Block a user