100ms Logo



Search docs

Echo Cancellation

The 100ms Android SDK automatically applies the best known settings to cancel echos from devices. However some android devices have issues with their hardware echo cancellation and benefit from relying only on software for it.

While we continually update the SDK with the latest known devices which have the issue, you may run into one we haven't tested with yet.

If you find that a certain device echos when it joins a meeting despite this, turning off its hardware echo cancellation may solve the problem. This is because if hardware echo cancellation is supported by the device, the SDK prefers hardware over software.

Echo cancellation settings can only be applied before a meeting a joined. The 100ms Android SDK provides a way to turn this off in the builder function.

💡 Note this option must selectively be turned on for devices based on their models disabling hardware echo cancellation for all devices will result in other devices echoing which didn't before.

val faultyHardwareCancellationModels: HashSet<String> = hashSetOf("phone 1", "phone 2") // Get this from Build.MODEL for the device. private val useHardwareEchoCancellation = !faultyHardwareCancellationModels .contains(Build.MODEL) private val hmsTrackSettings = HMSTrackSettings.Builder() .audio( HMSAudioTrackSettings.Builder() .setUseHardwareAcousticEchoCanceler(useHardwareEchoCancellation).build() ) .build() val hmsSDK = HMSSDK .Builder(application) .setTrackSettings(hmsTrackSettings) // SDK uses HW echo cancellation, if nothing is set in builder .build()