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

Commit 118823d3 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Restore audio focus correctly after transient sounds" into main

parents 0347d720 5befdff9
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -130,6 +130,12 @@ public final class AudioFocusInfo implements Parcelable {
     */
    public int getFlags() { return mFlags; }

    /** @hide */
    public boolean isLossReceivedTransient() {
        return mLossReceived == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT
                || mLossReceived == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK;
    }

    @Override
    public int describeContents() {
        return 0;
+18 −3
Original line number Diff line number Diff line
@@ -407,7 +407,21 @@ public class MediaFocusControl implements PlayerFocusEnforcer {
            }
        }

        // Also handle focus restoration for apps in the multi-focus list.
        if (mMultiAudioFocusEnabled && !mMultiAudioFocusList.isEmpty()) {
            if (audioFocusDesktop()) {
                final boolean canReassignAudioFocus = canReassignAudioFocus();
                for (FocusRequester multifr : mMultiAudioFocusList) {
                    // Check if the requester needs its focus restored. This is true if:
                    //  - focus can be reassigned (e.g. no call) AND it had a transient loss,
                    //  - OR it's a locked focus owner.
                    if ((canReassignAudioFocus
                            && multifr.toAudioFocusInfo().isLossReceivedTransient())
                            || isLockedFocusOwner(multifr)) {
                        multifr.handleFocusGain(AudioManager.AUDIOFOCUS_GAIN);
                    }
                }
            } else {
                for (FocusRequester multifr : mMultiAudioFocusList) {
                    if (isLockedFocusOwner(multifr)) {
                        multifr.handleFocusGain(AudioManager.AUDIOFOCUS_GAIN);
@@ -415,6 +429,7 @@ public class MediaFocusControl implements PlayerFocusEnforcer {
                }
            }
        }
    }

    /**
     * Focus is requested, propagate the associated loss throughout the stack.