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
。 请注意,如果没有路线可用,则禁用该按钮,而不是使操作提供程序使菜单项不可见。 这样,只有当用户可以发现并选择匹配的路线时,该按钮才可见。
使用媒体路由操作提供者,必须将活动的一个子类AppCompatActivity
从android.support.v7.appcompat
支持库。 有关详细信息,请参阅支持库文档。
应用程序应定义一个菜单资源,以将提供程序包含在操作栏选项菜单中。 请注意,支持库操作栏使用应用程序的资源命名空间中定义的属性,而不是框架的资源命名空间来配置每个项目。
<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. } }
Public constructors |
|
---|---|
MediaRouteActionProvider(Context context) 创建操作提供者。 |
Public methods |
|
---|---|
MediaRouteDialogFactory |
getDialogFactory() 显示路径选择器或控制器对话框时,获取媒体路径对话框工厂使用。 |
MediaRouteButton |
getMediaRouteButton() 获取关联的媒体路由按钮;如果尚未创建,则返回null。 |
MediaRouteSelector |
getRouteSelector() 获取媒体路由选择器,用于过滤用户可以使用媒体路由选择器对话框选择的路由。 |
boolean |
isVisible() 如果 |
View |
onCreateActionView() 用于创建新操作视图的工厂方法。 |
MediaRouteButton |
onCreateMediaRouteButton() 当媒体路由按钮正在创建时调用。 |
boolean |
onPerformDefaultAction() 执行可选的默认操作。 |
boolean |
overridesItemVisibility() 此方法的结果决定 |
void |
setDialogFactory(MediaRouteDialogFactory factory) 显示路径选择器或控制器对话框时,设置要使用的媒体路径对话框工厂。 |
void |
setRouteSelector(MediaRouteSelector selector) 设置媒体路由选择器,用于过滤用户可以使用媒体路由选择器对话框选择的路由。 |
Inherited methods |
|
---|---|
From class android.support.v4.view.ActionProvider
|
|
From class java.lang.Object
|
MediaRouteActionProvider (Context context)
创建操作提供者。
Parameters | |
---|---|
context |
Context : The context. |
MediaRouteDialogFactory getDialogFactory ()
显示路径选择器或控制器对话框时,获取媒体路径对话框工厂使用。
Returns | |
---|---|
MediaRouteDialogFactory |
The dialog factory, never null. |
MediaRouteButton getMediaRouteButton ()
获取关联的媒体路由按钮;如果尚未创建,则返回null。
Returns | |
---|---|
MediaRouteButton |
MediaRouteSelector getRouteSelector ()
获取媒体路由选择器,用于过滤用户可以使用媒体路由选择器对话框选择的路由。
Returns | |
---|---|
MediaRouteSelector |
The selector, never null. |
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. |
MediaRouteButton onCreateMediaRouteButton ()
当媒体路由按钮正在创建时调用。
子类可以重写此方法来自定义按钮。
Returns | |
---|---|
MediaRouteButton |
boolean onPerformDefaultAction ()
执行可选的默认操作。
对于放置在未显示为菜单项的操作提供者的情况,如果先前用于处理菜单选择的回调处理了该事件,则调用此方法。
菜单项选择按以下顺序处理:
MenuItem.OnMenuItemClickListener.onMenuItemClick
.onOptionsItemSelected(android.view.MenuItem)
FragmentActivity.onOptionsItemSelected(MenuItem)} onOptionsItemSelected(android.view.MenuItem)
Fragment.onOptionsItemSelected(MenuItem)}Intent
set via MenuItem.setIntent(android.content.Intent)
默认实现不执行任何操作并返回false。
Returns | |
---|---|
boolean |
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. |
void setDialogFactory (MediaRouteDialogFactory factory)
显示路径选择器或控制器对话框时,设置要使用的媒体路径对话框工厂。
Parameters | |
---|---|
factory |
MediaRouteDialogFactory : The dialog factory, must not be null. |
void setRouteSelector (MediaRouteSelector selector)
设置媒体路由选择器,用于过滤用户可以使用媒体路由选择器对话框选择的路由。
Parameters | |
---|---|
selector |
MediaRouteSelector : The selector, must not be null. |