Fields Summary |
---|
private static final String | TAG |
private final android.support.v7.media.MediaRouter | mRouter |
private final MediaRouterCallback | mCallback |
private final MediaRouter.RouteInfo | mRoute |
private boolean | mCreated |
private boolean | mAttachedToWindow |
private android.graphics.drawable.Drawable | mMediaRouteConnectingDrawable |
private android.graphics.drawable.Drawable | mMediaRouteOnDrawable |
private android.graphics.drawable.Drawable | mCurrentIconDrawable |
private android.graphics.drawable.Drawable | mSettingsDrawable |
private android.view.View | mControlView |
private android.widget.Button | mDisconnectButton |
private android.widget.Button | mStopCastingButton |
private android.widget.ImageButton | mPlayPauseButton |
private android.widget.ImageButton | mSettingsButton |
private android.widget.ImageView | mArtView |
private android.widget.TextView | mTitleView |
private android.widget.TextView | mSubtitleView |
private android.widget.TextView | mRouteNameView |
private android.view.View | mTitlesWrapper |
private android.support.v4.media.session.MediaControllerCompat | mMediaController |
private MediaControllerCallback | mControllerCallback |
private android.support.v4.media.session.PlaybackStateCompat | mState |
private android.support.v4.media.MediaDescriptionCompat | mDescription |
Methods Summary |
---|
private android.graphics.drawable.Drawable | getIconDrawable()
if (mRoute.isConnecting()) {
if (mMediaRouteConnectingDrawable == null) {
mMediaRouteConnectingDrawable = MediaRouterThemeHelper.getThemeDrawable(
getContext(), R.attr.mediaRouteConnectingDrawable);
}
return mMediaRouteConnectingDrawable;
} else {
if (mMediaRouteOnDrawable == null) {
mMediaRouteOnDrawable = MediaRouterThemeHelper.getThemeDrawable(
getContext(), R.attr.mediaRouteOnDrawable);
}
return mMediaRouteOnDrawable;
}
|
public android.view.View | getMediaControlView()Gets the media control view that was created by {@link #onCreateMediaControlView(Bundle)}.
return mControlView;
|
public MediaSessionCompat.Token | getMediaSession()Gets the description being used by the default UI.
return mMediaController == null ? null : mMediaController.getSessionToken();
|
public MediaRouter.RouteInfo | getRoute()Gets the route that this dialog is controlling.
return mRoute;
|
public void | onAttachedToWindow()
super.onAttachedToWindow();
mAttachedToWindow = true;
mRouter.addCallback(MediaRouteSelector.EMPTY, mCallback,
MediaRouter.CALLBACK_FLAG_UNFILTERED_EVENTS);
setMediaSession(mRouter.getMediaSessionToken());
|
protected void | onCreate(android.os.Bundle savedInstanceState)
super.onCreate(savedInstanceState);
getWindow().requestFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.mr_media_route_controller_material_dialog_b);
ClickListener listener = new ClickListener();
mDisconnectButton = (Button) findViewById(R.id.disconnect);
mDisconnectButton.setOnClickListener(listener);
mStopCastingButton = (Button) findViewById(R.id.stop);
mStopCastingButton.setOnClickListener(listener);
mSettingsButton = (ImageButton) findViewById(R.id.settings);
mSettingsButton.setOnClickListener(listener);
mArtView = (ImageView) findViewById(R.id.art);
mTitleView = (TextView) findViewById(R.id.title);
mSubtitleView = (TextView) findViewById(R.id.subtitle);
mTitlesWrapper = findViewById(R.id.text_wrapper);
mPlayPauseButton = (ImageButton) findViewById(R.id.play_pause);
mPlayPauseButton.setOnClickListener(listener);
mRouteNameView = (TextView) findViewById(R.id.route_name);
mCreated = true;
if (update()) {
mControlView = onCreateMediaControlView(savedInstanceState);
FrameLayout controlFrame =
(FrameLayout)findViewById(R.id.media_route_control_frame);
if (mControlView != null) {
controlFrame.findViewById(R.id.default_control_frame).setVisibility(View.GONE);
controlFrame.addView(mControlView);
}
}
|
public android.view.View | onCreateMediaControlView(android.os.Bundle savedInstanceState)Provides the subclass an opportunity to create a view that will
be included within the body of the dialog to offer additional media controls
for the currently playing content.
return null;
|
public void | onDetachedFromWindow()
mRouter.removeCallback(mCallback);
setMediaSession(null);
mAttachedToWindow = false;
super.onDetachedFromWindow();
|
public boolean | onKeyDown(int keyCode, android.view.KeyEvent event)
if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN
|| keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
mRoute.requestUpdateVolume(keyCode == KeyEvent.KEYCODE_VOLUME_DOWN ? -1 : 1);
return true;
}
return super.onKeyDown(keyCode, event);
|
public boolean | onKeyUp(int keyCode, android.view.KeyEvent event)
if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN
|| keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
return true;
}
return super.onKeyUp(keyCode, event);
|
private void | setMediaSession(MediaSessionCompat.Token sessionToken)Set the session to use for metadata and transport controls. The dialog
will listen to changes on this session and update the UI automatically in
response to changes.
if (mMediaController != null) {
mMediaController.unregisterCallback(mControllerCallback);
mMediaController = null;
}
if (sessionToken == null) {
return;
}
if (!mAttachedToWindow) {
return;
}
try {
mMediaController = new MediaControllerCompat(getContext(), sessionToken);
} catch (RemoteException e) {
Log.e(TAG, "Error creating media controller in setMediaSession.", e);
}
if (mMediaController != null) {
mMediaController.registerCallback(mControllerCallback);
}
MediaMetadataCompat metadata = mMediaController == null ? null
: mMediaController.getMetadata();
mDescription = metadata == null ? null : metadata.getDescription();
mState = mMediaController == null ? null : mMediaController.getPlaybackState();
update();
|
private boolean | update()
if (!mRoute.isSelected() || mRoute.isDefault()) {
dismiss();
return false;
}
if (!mCreated) {
return false;
}
mRouteNameView.setText(mRoute.getName());
if (mRoute.canDisconnect()) {
mDisconnectButton.setVisibility(View.VISIBLE);
} else {
mDisconnectButton.setVisibility(View.GONE);
}
if (mRoute.getSettingsIntent() != null) {
mSettingsButton.setVisibility(View.VISIBLE);
} else {
mSettingsButton.setVisibility(View.GONE);
}
if (mControlView == null) {
if (mDescription != null) {
if (mDescription.getIconBitmap() != null) {
mArtView.setImageBitmap(mDescription.getIconBitmap());
mArtView.setVisibility(View.VISIBLE);
} else if (mDescription.getIconUri() != null) {
// TODO replace with background load of icon
mArtView.setImageURI(mDescription.getIconUri());
mArtView.setVisibility(View.VISIBLE);
} else {
mArtView.setImageDrawable(null);
mArtView.setVisibility(View.GONE);
}
boolean haveText = false;
CharSequence text = mDescription.getTitle();
if (!TextUtils.isEmpty(text)) {
mTitleView.setText(text);
haveText = true;
} else {
mTitleView.setText(null);
mTitleView.setVisibility(View.GONE);
}
text = mDescription.getSubtitle();
if (!TextUtils.isEmpty(text)) {
mSubtitleView.setText(mDescription.getSubtitle());
haveText = true;
} else {
mSubtitleView.setText(null);
mSubtitleView.setVisibility(View.GONE);
}
if (!haveText) {
mTitlesWrapper.setVisibility(View.GONE);
} else {
mTitlesWrapper.setVisibility(View.VISIBLE);
}
} else {
mArtView.setVisibility(View.GONE);
mTitlesWrapper.setVisibility(View.GONE);
}
if (mState != null) {
boolean isPlaying = mState.getState() == PlaybackStateCompat.STATE_BUFFERING
|| mState.getState() == PlaybackStateCompat.STATE_PLAYING;
boolean supportsPlay = (mState.getActions() & (PlaybackStateCompat.ACTION_PLAY
| PlaybackStateCompat.ACTION_PLAY_PAUSE)) != 0;
boolean supportsPause = (mState.getActions() & (PlaybackStateCompat.ACTION_PAUSE
| PlaybackStateCompat.ACTION_PLAY_PAUSE)) != 0;
if (isPlaying && supportsPause) {
mPlayPauseButton.setVisibility(View.VISIBLE);
mPlayPauseButton.setImageResource(MediaRouterThemeHelper.getThemeResource(
getContext(), R.attr.mediaRoutePauseDrawable));
mPlayPauseButton.setContentDescription(getContext().getResources()
.getText(R.string.mr_media_route_controller_pause));
} else if (!isPlaying && supportsPlay) {
mPlayPauseButton.setVisibility(View.VISIBLE);
mPlayPauseButton.setImageResource(MediaRouterThemeHelper.getThemeResource(
getContext(), R.attr.mediaRoutePlayDrawable));
mPlayPauseButton.setContentDescription(getContext().getResources()
.getText(R.string.mr_media_route_controller_play));
} else {
mPlayPauseButton.setVisibility(View.GONE);
}
} else {
mPlayPauseButton.setVisibility(View.GONE);
}
}
return true;
|