am 10479a29: Merge "Clean up behavior of type arguments for MediaRouter#getSelectedRoute" into jb-mr1.1-dev

* commit '10479a29cbdc55cfd25b30cd792a151234b55fa6':
  Clean up behavior of type arguments for MediaRouter#getSelectedRoute
This commit is contained in:
Adam Powell
2012-11-28 19:50:43 -08:00
committed by Android Git Automerger
3 changed files with 32 additions and 12 deletions

View File

@ -217,7 +217,8 @@ public class MediaRouteButton extends View {
void updateRemoteIndicator() { void updateRemoteIndicator() {
final RouteInfo selected = mRouter.getSelectedRoute(mRouteTypes); final RouteInfo selected = mRouter.getSelectedRoute(mRouteTypes);
final boolean isRemote = selected != mRouter.getSystemAudioRoute(); final boolean isRemote = selected != mRouter.getSystemAudioRoute();
final boolean isConnecting = selected.getStatusCode() == RouteInfo.STATUS_CONNECTING; final boolean isConnecting = selected != null &&
selected.getStatusCode() == RouteInfo.STATUS_CONNECTING;
boolean needsRefresh = false; boolean needsRefresh = false;
if (mRemoteActive != isRemote) { if (mRemoteActive != isRemote) {

View File

@ -136,13 +136,14 @@ public class MediaRouteChooserDialogFragment extends DialogFragment {
if (mRouter == null) return; if (mRouter == null) return;
final RouteInfo selectedRoute = mRouter.getSelectedRoute(mRouteTypes); final RouteInfo selectedRoute = mRouter.getSelectedRoute(mRouteTypes);
mVolumeIcon.setImageResource( mVolumeIcon.setImageResource(selectedRoute == null ||
selectedRoute.getPlaybackType() == RouteInfo.PLAYBACK_TYPE_LOCAL ? selectedRoute.getPlaybackType() == RouteInfo.PLAYBACK_TYPE_LOCAL ?
R.drawable.ic_audio_vol : R.drawable.ic_media_route_on_holo_dark); R.drawable.ic_audio_vol : R.drawable.ic_media_route_on_holo_dark);
mIgnoreSliderVolumeChanges = true; mIgnoreSliderVolumeChanges = true;
if (selectedRoute.getVolumeHandling() == RouteInfo.PLAYBACK_VOLUME_FIXED) { if (selectedRoute == null ||
selectedRoute.getVolumeHandling() == RouteInfo.PLAYBACK_VOLUME_FIXED) {
// Disable the slider and show it at max volume. // Disable the slider and show it at max volume.
mVolumeSlider.setMax(1); mVolumeSlider.setMax(1);
mVolumeSlider.setProgress(1); mVolumeSlider.setProgress(1);
@ -160,7 +161,8 @@ public class MediaRouteChooserDialogFragment extends DialogFragment {
if (mIgnoreSliderVolumeChanges) return; if (mIgnoreSliderVolumeChanges) return;
final RouteInfo selectedRoute = mRouter.getSelectedRoute(mRouteTypes); final RouteInfo selectedRoute = mRouter.getSelectedRoute(mRouteTypes);
if (selectedRoute.getVolumeHandling() == RouteInfo.PLAYBACK_VOLUME_VARIABLE) { if (selectedRoute != null &&
selectedRoute.getVolumeHandling() == RouteInfo.PLAYBACK_VOLUME_VARIABLE) {
final int maxVolume = selectedRoute.getVolumeMax(); final int maxVolume = selectedRoute.getVolumeMax();
newValue = Math.max(0, Math.min(newValue, maxVolume)); newValue = Math.max(0, Math.min(newValue, maxVolume));
selectedRoute.requestSetVolume(newValue); selectedRoute.requestSetVolume(newValue);
@ -652,15 +654,20 @@ public class MediaRouteChooserDialogFragment extends DialogFragment {
public boolean onKeyDown(int keyCode, KeyEvent event) { public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN && mVolumeSlider.isEnabled()) { if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN && mVolumeSlider.isEnabled()) {
mRouter.getSelectedRoute(mRouteTypes).requestUpdateVolume(-1); final RouteInfo selectedRoute = mRouter.getSelectedRoute(mRouteTypes);
if (selectedRoute != null) {
selectedRoute.requestUpdateVolume(-1);
return true; return true;
}
} else if (keyCode == KeyEvent.KEYCODE_VOLUME_UP && mVolumeSlider.isEnabled()) { } else if (keyCode == KeyEvent.KEYCODE_VOLUME_UP && mVolumeSlider.isEnabled()) {
final RouteInfo selectedRoute = mRouter.getSelectedRoute(mRouteTypes);
if (selectedRoute != null) {
mRouter.getSelectedRoute(mRouteTypes).requestUpdateVolume(1); mRouter.getSelectedRoute(mRouteTypes).requestUpdateVolume(1);
return true; return true;
} else {
return super.onKeyDown(keyCode, event);
} }
} }
return super.onKeyDown(keyCode, event);
}
public boolean onKeyUp(int keyCode, KeyEvent event) { public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN && mVolumeSlider.isEnabled()) { if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN && mVolumeSlider.isEnabled()) {

View File

@ -313,13 +313,25 @@ public class MediaRouter {
} }
/** /**
* Return the currently selected route for the given types * Return the currently selected route for any of the given types
* *
* @param type route types * @param type route types
* @return the selected route * @return the selected route
*/ */
public RouteInfo getSelectedRoute(int type) { public RouteInfo getSelectedRoute(int type) {
if (sStatic.mSelectedRoute != null &&
(sStatic.mSelectedRoute.mSupportedTypes & type) != 0) {
// If the selected route supports any of the types supplied, it's still considered
// 'selected' for that type.
return sStatic.mSelectedRoute; return sStatic.mSelectedRoute;
} else if (type == ROUTE_TYPE_USER) {
// The caller specifically asked for a user route and the currently selected route
// doesn't qualify.
return null;
}
// If the above didn't match and we're not specifically asking for a user route,
// consider the default selected.
return sStatic.mDefaultAudioVideo;
} }
/** /**