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

Commit d51d3983 authored by Jean-Michel Trivi's avatar Jean-Michel Trivi
Browse files

Fix alarm preview volume

SeekBarVolumizer: do not use FLAG_BYPASS_INTERRUPTION_POLICY as
 there is no need to bypass DnD modes in seek bar for volume
 since they are disabled according to the DnD mode.
AudioService (PlaybackActivityMonitor): check both
 AudioAttributes flags BYPASS_INTERRUPTION_POLICY and
 BYPASS_MUTE for forced alarm playback (see b/63617557).

Test: see bug
Bug: 67578783
Change-Id: Iaf43f16d96d1ad8a1eacc73a050db767004ba96b
parent 33238f21
Loading
Loading
Loading
Loading
+1 −2
Original line number Original line Diff line number Diff line
@@ -206,8 +206,7 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba
                    try {
                    try {
                        mRingtone.setAudioAttributes(new AudioAttributes.Builder(mRingtone
                        mRingtone.setAudioAttributes(new AudioAttributes.Builder(mRingtone
                                .getAudioAttributes())
                                .getAudioAttributes())
                                .setFlags(AudioAttributes.FLAG_BYPASS_INTERRUPTION_POLICY |
                                .setFlags(AudioAttributes.FLAG_BYPASS_MUTE)
                                        AudioAttributes.FLAG_BYPASS_MUTE)
                                .build());
                                .build());
                        mRingtone.play();
                        mRingtone.play();
                    } catch (Throwable e) {
                    } catch (Throwable e) {
+6 −2
Original line number Original line Diff line number Diff line
@@ -184,11 +184,15 @@ public final class PlaybackActivityMonitor
        }
        }
    }
    }


    private static final int FLAGS_FOR_SILENCE_OVERRIDE =
            AudioAttributes.FLAG_BYPASS_INTERRUPTION_POLICY |
            AudioAttributes.FLAG_BYPASS_MUTE;

    private void checkVolumeForPrivilegedAlarm(AudioPlaybackConfiguration apc, int event) {
    private void checkVolumeForPrivilegedAlarm(AudioPlaybackConfiguration apc, int event) {
        if (event == AudioPlaybackConfiguration.PLAYER_STATE_STARTED ||
        if (event == AudioPlaybackConfiguration.PLAYER_STATE_STARTED ||
                apc.getPlayerState() == AudioPlaybackConfiguration.PLAYER_STATE_STARTED) {
                apc.getPlayerState() == AudioPlaybackConfiguration.PLAYER_STATE_STARTED) {
            if ((apc.getAudioAttributes().getAllFlags() &
            if ((apc.getAudioAttributes().getAllFlags() & FLAGS_FOR_SILENCE_OVERRIDE)
                    AudioAttributes.FLAG_BYPASS_INTERRUPTION_POLICY) != 0 &&
                        == FLAGS_FOR_SILENCE_OVERRIDE  &&
                    apc.getAudioAttributes().getUsage() == AudioAttributes.USAGE_ALARM &&
                    apc.getAudioAttributes().getUsage() == AudioAttributes.USAGE_ALARM &&
                    mContext.checkPermission(android.Manifest.permission.MODIFY_PHONE_STATE,
                    mContext.checkPermission(android.Manifest.permission.MODIFY_PHONE_STATE,
                            apc.getClientPid(), apc.getClientUid()) ==
                            apc.getClientPid(), apc.getClientUid()) ==