In some mobile devices(like Motorola One Power - Android 10, Redmi Note 5 Pro - Android 7.1.2), sound from phone speaker is going into conference through phone mic and causing echo. This echo issue is coming only when Phone Speaker is in ON state.
I have used MODE_IN_COMMUNICATION mode of AudioManager:
mAudioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
mAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
Also, used below audio constraints to create Audio Source by using createAudioSource() API of PeerConnectionFactory:
audioConstraints = new MediaConstraints();
audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair("googEchoCancellation", "true"));
audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair("googAutoGainControl", "true"));
audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair("googHighpassFilter", "true"));
audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair("googNoiseSuppression", "true"));
Any help or guidance in resolving the issue will be well appreciated.
Some phones can't do hardware echo cancellation, even though they advertise it's available. Redmi Note 5 is definitely one of them, take a look at https://github.com/signalapp/Signal-Android/blob/master/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java, search for HARDWARE_AEC_BLACKLIST. So, to enable WebRTC AEC, use below methods of JavaAudioDeviceModule.class
setUseHardwareAcousticEchoCanceler(false)
setUseHardwareNoiseSuppressor(false)
(For reference, please have a look into createJavaAudioDevice() of PeerConnectionClient.java - Checkout official android example on googlesource.com
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With