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

Commit 075005f0 authored by Pavlin Radoslavov's avatar Pavlin Radoslavov Committed by Andre Eisenbach
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
parent ea3e91bc
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -507,7 +507,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);
@@ -529,6 +536,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;