启动一个音频播放服务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();
}
}