Most visited

Recently visited

MediaRouteActionProvider

public class MediaRouteActionProvider
extends ActionProvider

java.lang.Object
   ↳ android.support.v4.view.ActionProvider
     ↳ android.support.v7.app.MediaRouteActionProvider


媒体路由操作提供显示 media route button在应用程序的 ActionBar ,允许用户选择路线和控制当前选择的路线。

应用程序必须指定用户应该被允许通过使用 setRouteSelector(MediaRouteSelector)方法指定 selector来选择的路线种类。

有关将出现在操作栏菜单中的按钮的说明,请参阅MediaRouteButton 请注意,如果没有路线可用,则禁用该按钮,而不是使操作提供程序使菜单项不可见。 这样,只有当用户可以发现并选择匹配的路线时,该按钮才可见。

Prerequisites

使用媒体路由操作提供者,必须将活动的一个子类AppCompatActivityandroid.support.v7.appcompat支持库。 有关详细信息,请参阅支持库文档。

Example

应用程序应定义一个菜单资源,以将提供程序包含在操作栏选项菜单中。 请注意,支持库操作栏使用应用程序的资源命名空间中定义的属性,而不是框架的资源命名空间来配置每个项目。

 <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="android.support.v7.app.MediaRouteActionProvider"/>
 </menu>
 

然后配置菜单并为选择器设置路由选择器。

 public class MyActivity extends ActionBarActivity {
     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

MediaRouteActionProvider(Context context)

创建操作提供者。

Public methods

MediaRouteDialogFactory getDialogFactory()

显示路径选择器或控制器对话框时,获取媒体路径对话框工厂使用。

MediaRouteButton getMediaRouteButton()

获取关联的媒体路由按钮;如果尚未创建,则返回null。

MediaRouteSelector getRouteSelector()

获取媒体路由选择器,用于过滤用户可以使用媒体路由选择器对话框选择的路由。

boolean isVisible()

如果 overridesItemVisibility()返回true,则此方法的返回值将有助于确定此ActionProvider绑定的 MenuItem的可见性。

View onCreateActionView()

用于创建新操作视图的工厂方法。

MediaRouteButton onCreateMediaRouteButton()

当媒体路由按钮正在创建时调用。

boolean onPerformDefaultAction()

执行可选的默认操作。

boolean overridesItemVisibility()

此方法的结果决定 isVisible()是否将由此ActionProvider绑定的 MenuItem使用,以帮助确定其可见性。

void setDialogFactory(MediaRouteDialogFactory factory)

显示路径选择器或控制器对话框时,设置要使用的媒体路径对话框工厂。

void setRouteSelector(MediaRouteSelector selector)

设置媒体路由选择器,用于过滤用户可以使用媒体路由选择器对话框选择的路由。

Inherited methods

From class android.support.v4.view.ActionProvider
From class java.lang.Object

Public constructors

MediaRouteActionProvider

MediaRouteActionProvider (Context context)

创建操作提供者。

Parameters
context Context: The context.

Public methods

getDialogFactory

MediaRouteDialogFactory getDialogFactory ()

显示路径选择器或控制器对话框时,获取媒体路径对话框工厂使用。

Returns
MediaRouteDialogFactory The dialog factory, never null.

getMediaRouteButton

MediaRouteButton getMediaRouteButton ()

获取关联的媒体路由按钮;如果尚未创建,则返回null。

Returns
MediaRouteButton

getRouteSelector

MediaRouteSelector getRouteSelector ()

获取媒体路由选择器,用于过滤用户可以使用媒体路由选择器对话框选择的路由。

Returns
MediaRouteSelector The selector, never null.

isVisible

boolean isVisible ()

如果 overridesItemVisibility()返回true,则此方法的返回值将有助于确定此ActionProvider绑定的 MenuItem的可见性。

如果MenuItem的可见性被应用程序显式设置为false,则即使此方法返回true,MenuItem也不会显示。

Returns
boolean true if the MenuItem this ActionProvider is bound to is visible, false if it is invisible. The default implementation returns true.

onCreateActionView

View onCreateActionView ()

用于创建新操作视图的工厂方法。

Returns
View A new action view.

onCreateMediaRouteButton

MediaRouteButton onCreateMediaRouteButton ()

当媒体路由按钮正在创建时调用。

子类可以重写此方法来自定义按钮。

Returns
MediaRouteButton

onPerformDefaultAction

boolean onPerformDefaultAction ()

执行可选的默认操作。

对于放置在未显示为菜单项的操作提供者的情况,如果先前用于处理菜单选择的回调处理了该事件,则调用此方法。

菜单项选择按以下顺序处理:

默认实现不执行任何操作并返回false。

Returns
boolean

overridesItemVisibility

boolean overridesItemVisibility ()

此方法的结果决定了 isVisible()将由 MenuItem这个ActionProvider绑定,以帮助确定其可见性。

Returns
boolean true if this ActionProvider overrides the visibility of the MenuItem it is bound to, false otherwise. The default implementation returns false.

setDialogFactory

void setDialogFactory (MediaRouteDialogFactory factory)

显示路径选择器或控制器对话框时,设置要使用的媒体路径对话框工厂。

Parameters
factory MediaRouteDialogFactory: The dialog factory, must not be null.

setRouteSelector

void setRouteSelector (MediaRouteSelector selector)

设置媒体路由选择器,用于过滤用户可以使用媒体路由选择器对话框选择的路由。

Parameters
selector MediaRouteSelector: The selector, must not be null.

Hooray!