Merge "[Output Switcher] Improvement for seekbar volume control" into tm-qpr-dev
This commit is contained in:
@@ -422,7 +422,7 @@ public class InfoMediaManager extends MediaManager {
|
||||
|| sessionInfo.getSelectedRoutes().size() <= 1;
|
||||
}
|
||||
|
||||
private void refreshDevices() {
|
||||
private synchronized void refreshDevices() {
|
||||
mMediaDevices.clear();
|
||||
mCurrentConnectedDevice = null;
|
||||
if (TextUtils.isEmpty(mPackageName)) {
|
||||
@@ -452,7 +452,7 @@ public class InfoMediaManager extends MediaManager {
|
||||
return infos;
|
||||
}
|
||||
|
||||
private void buildAvailableRoutes() {
|
||||
private synchronized void buildAvailableRoutes() {
|
||||
for (MediaRoute2Info route : getAvailableRoutes(mPackageName)) {
|
||||
if (DEBUG) {
|
||||
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<>();
|
||||
RoutingSessionInfo routingSessionInfo = getRoutingSessionInfo(packageName);
|
||||
if (routingSessionInfo != null) {
|
||||
@@ -596,7 +596,7 @@ public class InfoMediaManager extends MediaManager {
|
||||
|
||||
@Override
|
||||
public void onSessionUpdated(RoutingSessionInfo sessionInfo) {
|
||||
dispatchDataChanged();
|
||||
refreshDevices();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -666,12 +666,22 @@ public class InfoMediaManagerTest {
|
||||
}
|
||||
|
||||
@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.mMediaRouterCallback.onSessionUpdated(mock(RoutingSessionInfo.class));
|
||||
|
||||
verify(mCallback).onDeviceAttributesChanged();
|
||||
verify(mCallback).onDeviceListAdded(any());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -133,6 +133,7 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback,
|
||||
@VisibleForTesting
|
||||
LocalMediaManager mLocalMediaManager;
|
||||
private MediaOutputMetricLogger mMetricLogger;
|
||||
private int mCurrentState;
|
||||
|
||||
private int mColorItemContent;
|
||||
private int mColorSeekbarProgress;
|
||||
@@ -207,6 +208,9 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback,
|
||||
if (TextUtils.equals(controller.getPackageName(), mPackageName)) {
|
||||
mMediaController = controller;
|
||||
mMediaController.unregisterCallback(mCb);
|
||||
if (mMediaController.getPlaybackState() != null) {
|
||||
mCurrentState = mMediaController.getPlaybackState().getState();
|
||||
}
|
||||
mMediaController.registerCallback(mCb);
|
||||
break;
|
||||
}
|
||||
@@ -1003,10 +1007,16 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback,
|
||||
|
||||
@Override
|
||||
public void onPlaybackStateChanged(PlaybackState playbackState) {
|
||||
final int state = playbackState.getState();
|
||||
if (state == PlaybackState.STATE_STOPPED || state == PlaybackState.STATE_PAUSED) {
|
||||
final int newState =
|
||||
playbackState == null ? PlaybackState.STATE_STOPPED : playbackState.getState();
|
||||
if (mCurrentState == newState) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (newState == PlaybackState.STATE_STOPPED || newState == PlaybackState.STATE_PAUSED) {
|
||||
mCallback.onMediaStoppedOrPaused();
|
||||
}
|
||||
mCurrentState = newState;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user