启动一个音频播放服务AudioService并开启音效加强:
public class PlayService extends Service{
private MediaPlayer mediaPlayer;
private LoudnessEnhancer loudnessEnhancer;
@Override
public void onCreate() {
super.onCreate();
loudnessEnhancer = new LoudnessEnhancer(mediaPlayer.getAudioSessionId());
loudnessEnhancer.setEnabled(true);
loudnessEnhancer.setTargetGain(20_00);
Log.e("TAG", "音效增强" + loudnessEnhancer.getTargetGain());
}
}
乍一看没毛病,测试下效果也不错。以为万事大吉,却不料被摆了一道!
多欣赏了一会发现声音变小了,经过排查日志(Android10)发现耳朵没毛病。
APM_AudioPolicyManager: unregisterEffect effect 379 enabled
不出所料,搜索解决不了问题。然后根据日志,用小小的铲子在大大的源码里面挖呀挖呀挖,挖不动,只挖了大概位置,然后猜测应该得释放一下吧?没明白其中奥义,但我明白了资源申请了记得释放的道理!
@Override
public void onDestroy() {
super.onDestroy();
if (loudnessEnhancer != null){
loudnessEnhancer.release();
}
}
Android音频服务中音效增强导致的问题及解决
文章描述了一个在Android服务中使用LoudnessEnhancer进行音效增强时遇到的问题,即声音在播放一段时间后变小。作者通过查看日志发现可能需要释放资源,因此在onDestroy()方法中添加了对LoudnessEnhancer的释放,以确保资源管理的正确性。
1245

被折叠的 条评论
为什么被折叠?



