A fragment that provides remote control functionality. This fragment provides an image for
the album art, a ProgressBar
for playback progression, and three configurable control buttons. If developers want to use
this fragment, they should add it to their layout XML file, and the CastContext
will automatically manage its state, and handle any user interactions.
<fragment android:id="@ id/cast_mini_controller" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:visibility="gone" class="com.google.android.gms.cast.framework.media.widget.MiniControllerFragment">
Configurable control buttons
The fragment can show up to three control buttons, from start to end. By default the fragment shows a play/pause toggle button. Developers can use the attributecastControlButtons
to override what buttons to show. The list of
supported control buttons are defined as ID resources:
@id/cast_button_type_empty
: Not placing a button in this slot.
@id/cast_button_type_custom
: A custom button.
@id/cast_button_type_play_pause_toggle
: A button that toggles playback.
@id/cast_button_type_skip_previous
: A button that skips to the previous item in
the queue.
@id/cast_button_type_skip_next
: A button that skips to the next item in the
queue.
@id/cast_button_type_rewind_30_seconds
: A button that rewinds the playback by 30
seconds.
@id/cast_button_type_forward_30_seconds
: A button that skips forward the
playback by 30 seconds.
@id/cast_button_type_mute_toggle
: A button that mutes and unmutes the remote
receiver.
@id/cast_button_type_closed_caption
: A button that opens a dialog to select text
and audio tracks.
Here is an example of showing a rewind button, a play/pause toggle button and a forward button, from start to end:
<array name="cast_mini_controller_control_buttons"> <item>@id/cast_button_type_rewind_30_seconds</item> <item>@id/cast_button_type_play_pause_toggle</item> <item>@id/cast_button_type_forward_30_seconds</item> </array> ... <fragment android:id="@ id/cast_mini_controller" ... app:castControlButtons="@array/cast_mini_controller_control_buttons" class="com.google.android.gms.cast.framework.media.widget.MiniControllerFragment">
@id/cast_button_type_empty
.
Add custom control buttons
This fragment supports adding custom control buttons which are not provided by the SDK, such as a "thumb up" button.1. Specify a slot to contain a custom button using
@id/cast_button_type_custom
in the castControlButtons
attribute.
You can then use
getButtonImageViewAt(int)
to obtain the ImageView
for
that custom button.
2. Implement a subclass of
UIController
. The
UIController
contains methods that are called by the SDK when the state of the
cast session or media session changes. Your subclass of
UIController
should take a ImageView
as one
of the parameters, and update its state as needed.
3. Override
onCreateView(LayoutInflater, ViewGroup, Bundle)
, call
getButtonImageViewAt(int)
to get the view object of the button, and then call
UIMediaController.bindViewToUIController(View, UIController)
to associate the view
with your custom
UIController
.
4. See MediaIntentReceiver
for how to handle the action from your custom button.
Here is an example of associating a button at slot 2 to a
UIController
called MyCustomUIController
:
// arrays.xml <array name="cast_mini_controller_control_buttons"> <item>@id/cast_button_type_empty</item> <item>@id/cast_button_type_rewind_30_seconds</item> <item>@id/cast_button_type_custom</item> <item>@id/cast_button_type_empty</item> </array> // MyCustomUIController.java class MyCustomUIController extends UIController { private final View mView; public MyCustomUIController(View view) { mView = view; } @Override public onMediaStatusUpdated() { // Update the state of mView based on the latest the media status. ... mView.setVisible(false); ... } } // MyMiniControllerFragment.java class MyMiniControllerFragment extends MiniControllerFragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); ImageView customButtonView = getButtonImageViewAt(2); MyCustomUIController myCustomUiController = new MyCustomUIController(customButtonView); getUIMediaController().bindViewToUIController(customButtonView, myCustomUiController); ... } }
Show or hide album art
The album art can be hidden by setting attribute castShowImageThumbnail
to
false
:
... app:castShowImageThumbnail="false" ...
The fragment will be visible when a media session starts, and will be invisible when a media session ends.
XML Attribute Summary
Inherited Field Summary
Public Constructor Summary
Public Method Summary
final ImageView |
getButtonImageViewAt(int slotIndex)
Returns the
ImageView
of the button at slotIndex in this container.
|
final int |
getButtonSlotCount()
Returns the number of slots to hold control buttons in this container.
|
final int |
getButtonTypeAt(int slotIndex)
Returns the type of the button at
slotIndex in this container.
|
UIMediaController |
getUIMediaController()
Returns the
UIMediaController used to bind views in this container.
|
View | |
void | |
void |
Inherited Method Summary
XML Attributes
CastMiniController_castBackground
Related Methods
CastMiniController_castButtonColor
Related Methods
CastMiniController_castClosedCaptionsButtonDrawable
Related Methods
CastMiniController_castControlButtons
Related Methods
CastMiniController_castForward30ButtonDrawable
Related Methods
CastMiniController_castLargePauseButtonDrawable
Related Methods
CastMiniController_castLargePlayButtonDrawable
Related Methods
CastMiniController_castLargeStopButtonDrawable
Related Methods
CastMiniController_castMuteToggleButtonDrawable
Related Methods
CastMiniController_castPauseButtonDrawable
Related Methods
CastMiniController_castPlayButtonDrawable
Related Methods
CastMiniController_castProgressBarColor
Related Methods
CastMiniController_castRewind30ButtonDrawable
Related Methods
CastMiniController_castShowImageThumbnail
Related Methods
CastMiniController_castSkipNextButtonDrawable
Related Methods
CastMiniController_castSkipPreviousButtonDrawable
Related Methods
CastMiniController_castStopButtonDrawable
Related Methods
CastMiniController_castSubtitleTextAppearance
Related Methods
CastMiniController_castTitleTextAppearance
Related Methods
Public Constructors
public MiniControllerFragment ()
Public Methods
public final ImageView getButtonImageViewAt (int slotIndex)
Returns the ImageView
of the button at slotIndex
in this container. The ImageView
is defined in the layout of the Activity
which implements this interface.
Parameters
slotIndex | the index of the slot in this container. |
---|
Throws
IndexOutOfBoundsException |
---|
public final int getButtonSlotCount ()
Returns the number of slots to hold control buttons in this container.
public final int getButtonTypeAt (int slotIndex)
Returns the type of the button at slotIndex
in this
container.
Button types are defined as one of the ID resources:
@id/cast_button_type_empty
: Not placing a button in this slot.@id/cast_button_type_custom
: A custom button.@id/cast_button_type_play_pause_toggle
: A button that toggles playback.@id/cast_button_type_skip_previous
: A button that skips to the previous item in the queue.@id/cast_button_type_skip_next
: A button that skips to the next item in the queue.@id/cast_button_type_rewind_30_seconds
: A button that rewinds the playback by 30 seconds.@id/cast_button_type_forward_30_seconds
: A button that skips forward the playback by 30 seconds.@id/cast_button_type_mute_toggle
: A button that mutes and unmutes the remote receiver.@id/cast_button_type_closed_caption
: A button that opens a dialog to select text and audio tracks.
Parameters
slotIndex | the index of the slot in this container. |
---|
Throws
IndexOutOfBoundsException |
---|
public UIMediaController getUIMediaController ()
Returns the
UIMediaController
used to bind views in this container.