是否有人知道是否可以使用投射图标创建自定义ImageButton
,并向此ActionProvider
添加ImageButton
以复制MediaRouteActionProvider行为?
在我的应用程序中,我使用带有拆分 ActionBar
的ActionBarSherlock,因此我无法使用MediaRouter v7支持库中内置的MediaRouteActionProvider(至少我不知道)因为这会将我的太多物品推入溢出菜单。
换句话说,如何在不使用MenuItem
而是使用ImageButton
的情况下挂钩MediaRouteActionProvider的功能?
任何帮助或想法都将不胜感激!
更新
这可以通过在XML中添加MediaRouteButton然后将选择器附加到按钮来轻松完成。
所以我的实现是这样的:
通过xml创建MediaRouteButton:
<android.support.v7.app.MediaRouteButton
android:id="@+id/media_route_button"
android:layout_height="wrap_content"
android:layout_width="wrap_content"/>
然后,当您想要使用它时,创建一个MediaRouteSelector注意:CHROME_CAST是您在
注册应用程序时由开发者控制台生成的IDhttps://cast.google.com/publish/
并使用setRouteSelector()方法将选择器附加到Button
MediaRouteSelector m_mediaRouteSelector = new MediaRouteSelector.Builder()
.addControlCategory(MediaControlIntent.CATEGORY_REMOTE_PLAYBACK)
.addControlCategory(
CastMediaControlIntent.categoryForCast(CHROME_CAST))
.build();
MediaRouteButton m_mediaRouteButton = (MediaRouteButton) findViewById(R.id.media_route_button);
然后就这样做:
m_mediaRouteButton.setRouteSelector(m_mediaRouteSelector);
对于使用ActionBarSherlock *
的人来说很重要请注意,要使其与ActionBarSherlock一起使用,您需要创建自己的extends MediaRouteButton
类并专门执行以下操作
@Override
public boolean showDialog(){
/** Do all the logic to find routes and show an AlertDialog where you call
* setView(View v) on in order to show the list of available routes
* since to use the built in buttons you have to use a base class that
* extends from FragmentActivity
*/
return true;
}
答案 0 :(得分:3)
在我的应用程序中,我使用ActionBarSherlock和一个拆分的ActionBar,所以我不能使用Google Cast SDK中内置的MediaRouteActionProvider(至少不是我所知)。
MediaRouteActionProvider
位于appcompat_v7
库项目中,而不是Cast SDK。
I forked MediaRouteActionProvider
and created a version that works using the native API Level 11 action bar。你可以做同样的事情来创建一个与ActionBarSherlock一起使用的东西,至少原则上是这样。我知道没有理由不这样做 - 如果它适用于本机操作栏和appcompat_v7
反向端口,它应该适用于ActionBarSherlock。