MediaRouteActionProvider

open class MediaRouteActionProvider
kotlin.Any
   ↳ 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.

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 selector on stop 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() { super.onStop(); mediaRouter.removeCallback(mCallback); } 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
<init>(context: Context!)

Creates the action provider.

Public methods
open Boolean

open Unit

Sets the media route selector for filtering the routes that the user can select using the media route chooser dialog.

open MediaRouteDialogFactory

Gets the media route dialog factory to use when showing the route chooser or controller dialog.

open MediaRouteSelector

Gets the media route selector for filtering the routes that the user can select using the media route chooser dialog.

open Unit

Sets 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 MediaRouteButton!

Called when the media route button is being created.

open Boolean

open Boolean

open View!

Public constructors

<init>

MediaRouteActionProvider(context: Context!)

Creates the action provider.

Parameters
context Context!: The context.

Public methods

onPerformDefaultAction

open fun onPerformDefaultAction(): Boolean

setRouteSelector

open fun setRouteSelector(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.

getDialogFactory

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.

getRouteSelector

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.

setDialogFactory

open fun setDialogFactory(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.

getMediaRouteButton

open fun getMediaRouteButton(): MediaRouteButton?

Gets the associated media route button, or null if it has not yet been created.

onCreateMediaRouteButton

open fun onCreateMediaRouteButton(): MediaRouteButton!

Called when the media route button is being created.

Subclasses may override this method to customize the button.

isVisible

open fun isVisible(): Boolean

overridesItemVisibility

open fun overridesItemVisibility(): Boolean

onCreateActionView

open fun onCreateActionView(): View!