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) |
|
|---|---|
android.support.v4.view.ActionProvider
|
|
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. |