From 8c7e263518804bbc5e1028a485fab88a03a9a8bc Mon Sep 17 00:00:00 2001 From: Joonghong Park Date: Tue, 19 Mar 2019 16:30:09 +0900 Subject: [PATCH] Fix BT keeping wrong state issue When media session (such as music player app) is closed unexpectedly, BT state is keeping wrong state even though there is no music streaming. This fixes this issue by adding a simple logic to check destruction of media session then return null when requesting Playback state. Bug: 125099920 Test: Test on phone and carkit as a remote node Change-Id: I4eac1d2ad0848ad515f36e9352774d0fe5505aa5 Signed-off-by: Joonghong Park --- .../core/java/com/android/server/media/MediaSessionRecord.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/services/core/java/com/android/server/media/MediaSessionRecord.java b/services/core/java/com/android/server/media/MediaSessionRecord.java index 442354bbb6b97..29529b8643c1c 100644 --- a/services/core/java/com/android/server/media/MediaSessionRecord.java +++ b/services/core/java/com/android/server/media/MediaSessionRecord.java @@ -669,6 +669,9 @@ public class MediaSessionRecord implements IBinder.DeathRecipient { PlaybackState state; long duration = -1; synchronized (mLock) { + if (mDestroyed) { + return null; + } state = mPlaybackState; if (mMetadata != null && mMetadata.containsKey(MediaMetadata.METADATA_KEY_DURATION)) { duration = mMetadata.getLong(MediaMetadata.METADATA_KEY_DURATION);