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() {
final RouteInfo selected = mRouter.getSelectedRoute(mRouteTypes);
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;
if (mRemoteActive != isRemote) {

View File

@ -136,13 +136,14 @@ public class MediaRouteChooserDialogFragment extends DialogFragment {
if (mRouter == null) return;
final RouteInfo selectedRoute = mRouter.getSelectedRoute(mRouteTypes);
mVolumeIcon.setImageResource(
mVolumeIcon.setImageResource(selectedRoute == null ||
selectedRoute.getPlaybackType() == RouteInfo.PLAYBACK_TYPE_LOCAL ?
R.drawable.ic_audio_vol : R.drawable.ic_media_route_on_holo_dark);
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.
mVolumeSlider.setMax(1);
mVolumeSlider.setProgress(1);
@ -160,7 +161,8 @@ public class MediaRouteChooserDialogFragment extends DialogFragment {
if (mIgnoreSliderVolumeChanges) return;
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();
newValue = Math.max(0, Math.min(newValue, maxVolume));
selectedRoute.requestSetVolume(newValue);
@ -652,14 +654,19 @@ public class MediaRouteChooserDialogFragment extends DialogFragment {
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN && mVolumeSlider.isEnabled()) {
mRouter.getSelectedRoute(mRouteTypes).requestUpdateVolume(-1);
return true;
final RouteInfo selectedRoute = mRouter.getSelectedRoute(mRouteTypes);
if (selectedRoute != null) {
selectedRoute.requestUpdateVolume(-1);
return true;
}
} else if (keyCode == KeyEvent.KEYCODE_VOLUME_UP && mVolumeSlider.isEnabled()) {
mRouter.getSelectedRoute(mRouteTypes).requestUpdateVolume(1);
return true;
} else {
return super.onKeyDown(keyCode, event);
final RouteInfo selectedRoute = mRouter.getSelectedRoute(mRouteTypes);
if (selectedRoute != null) {
mRouter.getSelectedRoute(mRouteTypes).requestUpdateVolume(1);
return true;
}
}
return super.onKeyDown(keyCode, event);
}
public boolean onKeyUp(int keyCode, KeyEvent event) {

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
* @return the selected route
*/
public RouteInfo getSelectedRoute(int type) {
return sStatic.mSelectedRoute;
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;
} 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;
}
/**