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

Commit 4144f2f2 authored by Eric Laurent's avatar Eric Laurent Committed by Automerger Merge Worker
Browse files

Merge "Notification playback: pause on release" into sc-dev am: e198354a am: ce4cc2de

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15505426

Change-Id: I29e7907c46f7818b2cb0db4c7a7704bb08c8b69b
parents 54aabf01 ce4cc2de
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -102,6 +102,13 @@ public abstract class PlayerBase {
        mState = AudioPlaybackConfiguration.PLAYER_STATE_IDLE;
    };

    /** @hide */
    public int getPlayerIId() {
        synchronized (mLock) {
            return mPlayerIId;
        }
    }

    /**
     * Call from derived class when instantiation / initialization is successful
     */
+17 −3
Original line number Diff line number Diff line
@@ -139,7 +139,7 @@ public class NotificationPlayer implements OnCompletionListener, OnErrorListener
                                + " with ducking", e);
                    }
                    player.start();
                    if (DEBUG) { Log.d(mTag, "player.start"); }
                    if (DEBUG) { Log.d(mTag, "player.start piid:" + player.getPlayerIId()); }
                } catch (Exception e) {
                    if (player != null) {
                        player.release();
@@ -155,7 +155,13 @@ public class NotificationPlayer implements OnCompletionListener, OnErrorListener
                    mPlayer = player;
                }
                if (mp != null) {
                    if (DEBUG) { Log.d(mTag, "mPlayer.release"); }
                    if (DEBUG) {
                        Log.d(mTag, "mPlayer.pause+release piid:" + player.getPlayerIId());
                    }
                    mp.pause();
                    try {
                        Thread.sleep(100);
                    } catch (InterruptedException ie) { }
                    mp.release();
                }
                this.notify();
@@ -244,6 +250,10 @@ public class NotificationPlayer implements OnCompletionListener, OnErrorListener
                        try {
                            mp.stop();
                        } catch (Exception e) { }
                        if (DEBUG) {
                            Log.i(mTag, "About to release MediaPlayer piid:"
                                    + mp.getPlayerIId() + " due to notif cancelled");
                        }
                        mp.release();
                        synchronized(mQueueAudioFocusLock) {
                            if (mAudioManagerWithAudioFocus != null) {
@@ -284,7 +294,7 @@ public class NotificationPlayer implements OnCompletionListener, OnErrorListener
    public void onCompletion(MediaPlayer mp) {
        synchronized(mQueueAudioFocusLock) {
            if (mAudioManagerWithAudioFocus != null) {
                if (DEBUG) Log.d(mTag, "onCompletion() abandonning AudioFocus");
                if (DEBUG) Log.d(mTag, "onCompletion() abandoning AudioFocus");
                mAudioManagerWithAudioFocus.abandonAudioFocus(null);
                mAudioManagerWithAudioFocus = null;
            } else {
@@ -310,6 +320,10 @@ public class NotificationPlayer implements OnCompletionListener, OnErrorListener
            }
        }
        if (mp != null) {
            if (DEBUG) {
                Log.i("NotificationPlayer", "About to release MediaPlayer piid:"
                        + mp.getPlayerIId() + " due to onCompletion");
            }
            mp.release();
        }
    }