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;
|
|| 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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user