android.media.audiofx.LoudnessEnhance 介绍
android.media.audiofx.LoudnessEnhancer 是 Android 提供的音频后处理效果类之一,用于增强音频的响度(Loudness)。它继承自 android.media.audiofx.AudioEffect,可在 API 级别 19(Android 4.4)及以上使用。
✅ 一、基本用途
LoudnessEnhancer 的作用是通过提升音频信号的增益来增强响度,但并不一定等同于音量加大。它更像是一种「音频压缩+放大」的效果,适用于提升人声或背景音频的感知。
✅ 二、基本用法
1. 创建实例
你需要为某个播放会话创建 LoudnessEnhancer 实例,通常使用音频播放的 audioSessionId。
// 假设你已经有一个 MediaPlayer 或 AudioTrack 的 audioSessionId val audioSessionId = mediaPlayer.audioSessionId // 创建 LoudnessEnhancer 实例 val loudnessEnhancer = LoudnessEnhancer(audioSessionId)
2. 设置增益(Gain)
LoudnessEnhancer 使用的是毫贝(mB, milliBels),1000 mB = 1 dB。
// 设置目标增益,例如 1000 mB = 1 dB loudnessEnhancer.setTargetGain(1000)
通常推荐的增益范围:
- 合理范围:0 ~ 5000 mB(0 ~ 5 dB)
- 不建议设置过高,避免音频失真
3. 启用或禁用
// 启用响度增强 loudnessEnhancer.enabled = true // 禁用 loudnessEnhancer.enabled = false
4. 释放资源
loudnessEnhancer.release()
✅ 三、完整示例
val mediaPlayer = MediaPlayer.create(context, R.raw.sample_audio) val loudnessEnhancer = LoudnessEnhancer(mediaPlayer.audioSessionId) loudnessEnhancer.setTargetGain(1500) // 增加 1.5 dB loudnessEnhancer.enabled = true mediaPlayer.start() // 记得释放资源 mediaPlayer.setOnCompletionListener { loudnessEnhancer.release() mediaPlayer.release() }
⚠️ 四、注意事项
注意点 | 说明 |
---|---|
音频会话 ID | LoudnessEnhancer 只能作用于有音频会话 ID 的音频轨道,如 MediaPlayer、AudioTrack 等。 |
播放前创建更安全 | 最好在开始播放前就初始化并启用,以确保不丢失效果。 |
设备兼容性 | 部分低端设备可能不支持此 AudioEffect,建议加 try-catch。 |
增益上限 | 设置过高会导致破音、失真甚至引发耳机损坏,建议设置增益不超过 5000 mB。 |
不影响系统音量 | 它增强的是播放流的响度,不会改变设备音量。 |
与其他 AudioEffect 冲突 | 同时使用多个 AudioEffect(如 Equalizer、Virtualizer)时,可能会有冲突,取决于设备实现。 |
✅ 五、判断设备是否支持
val effects = AudioEffect.queryEffects() val supported = effects.any { it.type == AudioEffect.EFFECT_TYPE_LOUDNESS_ENHANCER }
✅ 六、与其他音频处理类对比
类名 | 功能 | 使用场景 |
---|---|---|
Equalizer | 均衡器 | 调整不同频段的音量 |
BassBoost | 低音增强 | 提高低频效果 |
Virtualizer | 虚拟环绕声 | 提高立体声空间感 |
LoudnessEnhancer | 响度增强 | 增加整体响度和感知清晰度 |
如你需要结合 Media3 使用 LoudnessEnhancer,也可以通过自定义 AudioProcessor 或在 ExoPlayer 的音频会话 ID 获取后再创建增强器。如果你正在开发音频播放器(如你的光锥音乐项目),LoudnessEnhancer 是一个轻量但有效的增强听感的工具。