webrtc音量调节的方法之二

版权申明:未经允许请勿转载。转载前请先联系作者([email protected]

这篇文章是上一篇文章留下的手尾。
测试的时候被投诉的点有两个,一个是声音忽大忽小,二是调节通话音量能影响初始化声音。

可以处理。

public void syncVolume() {
    if (mAudioTrack == null) return;
    if (mActivity != null) {
        final AudioManager am = (AudioManager) 
        mActivity.getSystemService(AUDIO_SERVICE);
        am.setStreamVolume(AudioManager.STREAM_VOICE_CALL, 1, 
        AudioManager.STREAM_VOICE_CALL);
        int max = am.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
        max = max <= 0 ? 1 : max;
        int volume = am.getStreamVolume(AudioManager.STREAM_MUSIC);
        double v = (volume * volume * 10.0D) / (max * max);
        mAudioTrack.setVolume(v);
    } else {
        mAudioTrack.setVolume(5);
    }
}

解释下:

  1. 固定 STREAM_VOICE_CALL 的音量
  2. 通过二次函数,在低音量的时候,调节步进小,高音量的时候,调节步进大。

你可能感兴趣的:(Android)