Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e3c1cd43 authored by Pavlin Radoslavov's avatar Pavlin Radoslavov
Browse files

Explicitly mute the audio output while switching the A2DP Active Device

The mute/unmute of the audio output is needed during the A2DP
ActiveDevice switch to avoid audio glitches.

Bug: 78152025
Bug: 110441865
Test: Manual - stream with Pandora/Spotify and switch A2DP Active Device
Change-Id: I5a233460a07e0d4fffcb4e6cb208d846517f0c1e
(cherry picked from commit 075005f0ef8adf5397b9ed6210e0160f1a0314a5)
parent ee4cfdb3
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -517,7 +517,14 @@ public class A2dpService extends ProfileService {
                }
                // Make sure the Audio Manager knows the previous Active device is disconnected,
                // and the new Active device is connected.
                // Also, mute and unmute the output during the switch to avoid audio glitches.
                boolean wasMuted = false;
                if (previousActiveDevice != null) {
                    if (!mAudioManager.isStreamMute(AudioManager.STREAM_MUSIC)) {
                        mAudioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,
                                                         AudioManager.ADJUST_MUTE, 0);
                        wasMuted = true;
                    }
                    mAudioManager.setBluetoothA2dpDeviceConnectionStateSuppressNoisyIntent(
                            previousActiveDevice, BluetoothProfile.STATE_DISCONNECTED,
                            BluetoothProfile.A2DP, true, -1);
@@ -539,6 +546,10 @@ public class A2dpService extends ProfileService {
                // change, so the Audio Service can reset accordingly the audio
                // feeding parameters in the Audio HAL to the Bluetooth stack.
                mAudioManager.handleBluetoothA2dpDeviceConfigChange(mActiveDevice);
                if (wasMuted) {
                    mAudioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,
                                                     AudioManager.ADJUST_UNMUTE, 0);
                }
            }
        }
        return true;