From b2297dcdf99f7c1293c333ab7c683488db958c58 Mon Sep 17 00:00:00 2001 From: timhypeng Date: Thu, 24 Oct 2019 16:49:02 +0800 Subject: [PATCH] Unable to adjust cast device's volume - Update slider UI when receiving volume changed - Do not create an infinite message loop Bug: 143262277 Test: make -j42 RunSettingsRoboTests Change-Id: If83a97cfce8b90c2eda7d55389775222bfc6bba0 --- .../RemoteVolumePreferenceController.java | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/com/android/settings/notification/RemoteVolumePreferenceController.java b/src/com/android/settings/notification/RemoteVolumePreferenceController.java index 816d80f2be3..802d75ff6d7 100644 --- a/src/com/android/settings/notification/RemoteVolumePreferenceController.java +++ b/src/com/android/settings/notification/RemoteVolumePreferenceController.java @@ -23,6 +23,7 @@ import android.media.session.MediaSessionManager; import android.net.Uri; import android.os.Looper; import android.text.TextUtils; +import android.util.Log; import androidx.annotation.VisibleForTesting; import androidx.lifecycle.OnLifecycleEvent; @@ -40,6 +41,7 @@ import java.util.Objects; public class RemoteVolumePreferenceController extends VolumeSeekBarPreferenceController { private static final String KEY_REMOTE_VOLUME = "remote_volume"; + private static final String TAG = "RemoteVolumePrefCtr"; @VisibleForTesting static final int REMOTE_VOLUME = 100; @@ -75,10 +77,20 @@ public class RemoteVolumePreferenceController extends VolumeSeekBarPreferenceCon @Override public void onRemoteVolumeChanged(MediaSession.Token token, int flags) { if (Objects.equals(mActiveToken, token)) { - final MediaController.PlaybackInfo pi = mMediaController.getPlaybackInfo(); - if (pi != null) { - setSliderPosition(pi.getCurrentVolume()); + if (mPreference == null) { + Log.e(TAG,"Preference is null"); + return; } + if (mMediaController == null) { + Log.e(TAG,"MediaController is null"); + return; + } + final MediaController.PlaybackInfo pi = mMediaController.getPlaybackInfo(); + if (pi == null) { + Log.e(TAG,"PlaybackInfo is null"); + return; + } + mPreference.setProgress(pi.getCurrentVolume()); } } };