Merge "[Output Switcher] Improvement for seekbar volume control" into tm-qpr-dev

This commit is contained in:
Shaowei Shen
2022-09-14 09:27:12 +00:00
committed by Android (Google) Code Review
3 changed files with 28 additions and 8 deletions

View File

@@ -422,7 +422,7 @@ public class InfoMediaManager extends MediaManager {
|| sessionInfo.getSelectedRoutes().size() <= 1; || sessionInfo.getSelectedRoutes().size() <= 1;
} }
private void refreshDevices() { private synchronized void refreshDevices() {
mMediaDevices.clear(); mMediaDevices.clear();
mCurrentConnectedDevice = null; mCurrentConnectedDevice = null;
if (TextUtils.isEmpty(mPackageName)) { if (TextUtils.isEmpty(mPackageName)) {
@@ -452,7 +452,7 @@ public class InfoMediaManager extends MediaManager {
return infos; return infos;
} }
private void buildAvailableRoutes() { private synchronized void buildAvailableRoutes() {
for (MediaRoute2Info route : getAvailableRoutes(mPackageName)) { for (MediaRoute2Info route : getAvailableRoutes(mPackageName)) {
if (DEBUG) { if (DEBUG) {
Log.d(TAG, "buildAvailableRoutes() route : " + route.getName() + ", volume : " Log.d(TAG, "buildAvailableRoutes() route : " + route.getName() + ", volume : "
@@ -462,7 +462,7 @@ public class InfoMediaManager extends MediaManager {
} }
} }
private List<MediaRoute2Info> getAvailableRoutes(String packageName) { private synchronized List<MediaRoute2Info> getAvailableRoutes(String packageName) {
final List<MediaRoute2Info> infos = new ArrayList<>(); final List<MediaRoute2Info> infos = new ArrayList<>();
RoutingSessionInfo routingSessionInfo = getRoutingSessionInfo(packageName); RoutingSessionInfo routingSessionInfo = getRoutingSessionInfo(packageName);
if (routingSessionInfo != null) { if (routingSessionInfo != null) {
@@ -596,7 +596,7 @@ public class InfoMediaManager extends MediaManager {
@Override @Override
public void onSessionUpdated(RoutingSessionInfo sessionInfo) { public void onSessionUpdated(RoutingSessionInfo sessionInfo) {
dispatchDataChanged(); refreshDevices();
} }
} }
} }

View File

@@ -666,12 +666,22 @@ public class InfoMediaManagerTest {
} }
@Test @Test
public void onSessionUpdated_shouldDispatchDataChanged() { public void onSessionUpdated_shouldDispatchDeviceListAdded() {
final MediaRoute2Info info = mock(MediaRoute2Info.class);
when(info.getId()).thenReturn(TEST_ID);
when(info.getClientPackageName()).thenReturn(TEST_PACKAGE_NAME);
when(info.isSystemRoute()).thenReturn(true);
final List<MediaRoute2Info> routes = new ArrayList<>();
routes.add(info);
mShadowRouter2Manager.setAllRoutes(routes);
mInfoMediaManager.mPackageName = "";
mInfoMediaManager.registerCallback(mCallback); mInfoMediaManager.registerCallback(mCallback);
mInfoMediaManager.mMediaRouterCallback.onSessionUpdated(mock(RoutingSessionInfo.class)); mInfoMediaManager.mMediaRouterCallback.onSessionUpdated(mock(RoutingSessionInfo.class));
verify(mCallback).onDeviceAttributesChanged(); verify(mCallback).onDeviceListAdded(any());
} }
@Test @Test

View File

@@ -133,6 +133,7 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback,
@VisibleForTesting @VisibleForTesting
LocalMediaManager mLocalMediaManager; LocalMediaManager mLocalMediaManager;
private MediaOutputMetricLogger mMetricLogger; private MediaOutputMetricLogger mMetricLogger;
private int mCurrentState;
private int mColorItemContent; private int mColorItemContent;
private int mColorSeekbarProgress; private int mColorSeekbarProgress;
@@ -207,6 +208,9 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback,
if (TextUtils.equals(controller.getPackageName(), mPackageName)) { if (TextUtils.equals(controller.getPackageName(), mPackageName)) {
mMediaController = controller; mMediaController = controller;
mMediaController.unregisterCallback(mCb); mMediaController.unregisterCallback(mCb);
if (mMediaController.getPlaybackState() != null) {
mCurrentState = mMediaController.getPlaybackState().getState();
}
mMediaController.registerCallback(mCb); mMediaController.registerCallback(mCb);
break; break;
} }
@@ -1003,10 +1007,16 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback,
@Override @Override
public void onPlaybackStateChanged(PlaybackState playbackState) { public void onPlaybackStateChanged(PlaybackState playbackState) {
final int state = playbackState.getState(); final int newState =
if (state == PlaybackState.STATE_STOPPED || state == PlaybackState.STATE_PAUSED) { playbackState == null ? PlaybackState.STATE_STOPPED : playbackState.getState();
if (mCurrentState == newState) {
return;
}
if (newState == PlaybackState.STATE_STOPPED || newState == PlaybackState.STATE_PAUSED) {
mCallback.onMediaStoppedOrPaused(); mCallback.onMediaStoppedOrPaused();
} }
mCurrentState = newState;
} }
}; };