MediaRouteActionProvider
open class MediaRouteActionProvider : ActionProvider
kotlin.Any | ||
↳ | androidx.core.view.ActionProvider | |
↳ | androidx.mediarouter.app.MediaRouteActionProvider |
The media route action provider displays a media route button
in the application's ActionBar
to allow the user to select routes and to control the currently selected route.
The application must specify the kinds of routes that the user should be allowed to select by specifying a selector
with the setRouteSelector
method.
Refer to MediaRouteButton
for a description of the button that will appear in the action bar menu. Note that instead of disabling the button when no routes are available, the action provider will instead make the menu item invisible. In this way, the button will only be visible when it is possible for the user to discover and select a matching route. You can call setAlwaysVisible
to override this behavior.
Prerequisites
To use the media route action provider, the activity must be a subclass of AppCompatActivity
from the android.support.v7.appcompat
support library. Refer to support library documentation for details.
Example
The application should define a menu resource to include the provider in the action bar options menu. Note that the support library action bar uses attributes that are defined in the application's resource namespace rather than the framework's resource namespace to configure each item.
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/media_route_menu_item" android:title="@string/media_route_menu_title" app:showAsAction="always" app:actionProviderClass="androidx.mediarouter.app.MediaRouteActionProvider"/> </menu>
Then configure the menu and set the route selector for the chooser.
public class MyActivity extends AppCompatActivity { private MediaRouter mRouter; private MediaRouter.Callback mCallback; private MediaRouteSelector mSelector; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mRouter = Mediarouter.getInstance(this); mSelector = new MediaRouteSelector.Builder() .addControlCategory(MediaControlIntent.CATEGORY_LIVE_AUDIO) .addControlCategory(MediaControlIntent.CATEGORY_REMOTE_PLAYBACK) .build(); mCallback = new MyCallback(); } // Add the callback on start to tell the media router what kinds of routes // the application is interested in so that it can try to discover suitable ones. public void onStart() { super.onStart(); mediaRouter.addCallback(mSelector, mCallback, MediaRouter.CALLBACK_FLAG_REQUEST_DISCOVERY); MediaRouter.RouteInfo route = mediaRouter.updateSelectedRoute(mSelector); // do something with the route... } // Remove the callback flag CALLBACK_FLAG_REQUEST_DISCOVERY on stop by calling // addCallback() again in order to tell the media router that it no longer // needs to invest effort trying to discover routes of these kinds for now. public void onStop() { mRouter.addCallback(mSelector, mCallback, /* flags= */ 0); super.onStop(); } // Remove the callback when the activity is destroyed. public void onDestroy() { mRouter.removeCallback(mCallback); super.onDestroy(); } public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); getMenuInflater().inflate(R.menu.sample_media_router_menu, menu); MenuItem mediaRouteMenuItem = menu.findItem(R.id.media_route_menu_item); MediaRouteActionProvider mediaRouteActionProvider = (MediaRouteActionProvider)MenuItemCompat.getActionProvider(mediaRouteMenuItem); mediaRouteActionProvider.setRouteSelector(mSelector); return true; } private final class MyCallback extends MediaRouter.Callback { // Implement callback methods as needed. } }
Summary
Public constructors | |
---|---|
Creates the action provider. |
Public methods | |
---|---|
open Unit |
Enables dynamic group feature. |
open MediaRouteDialogFactory |
Gets the media route dialog factory to use when showing the route chooser or controller dialog. |
open MediaRouteButton? |
Gets the associated media route button, or null if it has not yet been created. |
open MediaRouteSelector |
Gets the media route selector for filtering the routes that the user can select using the media route chooser dialog. |
open Boolean | |
open View! | |
open MediaRouteButton! |
Called when the media route button is being created. |
open Boolean | |
open Boolean | |
open Unit |
setAlwaysVisible(alwaysVisible: Boolean) Sets whether |
open Unit |
setDialogFactory(@NonNull factory: MediaRouteDialogFactory) Sets the media route dialog factory to use when showing the route chooser or controller dialog. |
open Unit |
setRouteSelector(@NonNull selector: MediaRouteSelector) Sets the media route selector for filtering the routes that the user can select using the media route chooser dialog. |
Inherited functions | |
---|---|
Public constructors
<init>
MediaRouteActionProvider(context: Context!)
Creates the action provider.
Parameters | |
---|---|
context |
Context!: The context. |
Public methods
enableDynamicGroup
open funenableDynamicGroup(): Unit
Deprecated: Use
with androidx.mediarouter.media.MediaRouterParams#DIALOG_TYPE_DYNAMIC_GROUP
instead.
Enables dynamic group feature. With this enabled, a different set of MediaRouteChooserDialog
and MediaRouteControllerDialog
is shown when the button is clicked. If a media route provider
supports dynamic group, the users can use that feature with the dialogs.
getDialogFactory
@NonNull open fun getDialogFactory(): MediaRouteDialogFactory
Gets the media route dialog factory to use when showing the route chooser or controller dialog.
Return | |
---|---|
MediaRouteDialogFactory |
The dialog factory, never null. |
getMediaRouteButton
@Nullable open fun getMediaRouteButton(): MediaRouteButton?
Gets the associated media route button, or null if it has not yet been created.
getRouteSelector
@NonNull open fun getRouteSelector(): MediaRouteSelector
Gets the media route selector for filtering the routes that the user can select using the media route chooser dialog.
Return | |
---|---|
MediaRouteSelector |
The selector, never null. |
isVisible
open fun isVisible(): Boolean
onCreateActionView
open fun onCreateActionView(): View!
onCreateMediaRouteButton
open fun onCreateMediaRouteButton(): MediaRouteButton!
Called when the media route button is being created.
Subclasses may override this method to customize the button.
onPerformDefaultAction
open fun onPerformDefaultAction(): Boolean
overridesItemVisibility
open fun overridesItemVisibility(): Boolean
setAlwaysVisible
open fun setAlwaysVisible(alwaysVisible: Boolean): Unit
Sets whether MediaRouteButton
is visible when no routes are available. When true, the button is visible even when there are no routes to connect. The default is false.
Parameters | |
---|---|
alwaysVisible |
Boolean: true to show MediaRouteButton even when no routes are available. |
setDialogFactory
open fun setDialogFactory(@NonNull factory: MediaRouteDialogFactory): Unit
Sets the media route dialog factory to use when showing the route chooser or controller dialog.
Parameters | |
---|---|
factory |
MediaRouteDialogFactory: The dialog factory, must not be null. |
setRouteSelector
open fun setRouteSelector(@NonNull selector: MediaRouteSelector): Unit
Sets the media route selector for filtering the routes that the user can select using the media route chooser dialog.
Parameters | |
---|---|
selector |
MediaRouteSelector: The selector, must not be null. |