这是我的布局:
<android.support.v7.app.MediaRouteButton
android:id="@+id/button_fling"
android:layout_gravity="center_vertical"
android:layout_width="wrap_content"
android:background="@drawable/mr_ic_media_route_holo_light"
android:layout_height="wrap_content"
android:mediaRouteTypes="user"
android:layout_weight="1"
android:visibility="visible" />
这是我的活动:
@覆盖
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
mMediaRouter = MediaRouter.getInstance(getApplicationContext());
mMediaRouteSelector = new MediaRouteSelector.Builder()
.addControlCategory(CastMediaControlIntent.categoryForCast(getString(R.string.app_id)))
.build();
mMediaRouterCallback = new MyMediaRouterCallback();
mMediaRouteButton = (MediaRouteButton) findViewById(R.id.button_fling);
mMediaRouteButton.setRouteSelector(mMediaRouteSelector);
button_fling2 = (ImageView)findViewById(R.id.button_fling2);
}
public class MyMediaRouterCallback extends MediaRouter.Callback {
public int mRouteCount =0;
@Override
public void onRouteAdded(MediaRouter router, RouteInfo route) {
Log.d(TAG, "onRouteAdded");
if (++mRouteCount == 1) {
// Show the button when a device is discovered.
Log.i(TAG,"MediaRoute is visible");
button_fling2.setVisibility(View.VISIBLE);
mMediaRouteButton.setVisibility(View.VISIBLE);
}
}
@Override
public void onRouteRemoved(MediaRouter router, RouteInfo route) {
Log.d(TAG, "onRouteRemoved");
if (--mRouteCount == 0) {
// Hide the button if there are no devices discovered.
Log.i(TAG,"MediaRoute is GONE");
button_fling2.setVisibility(View.GONE);
mMediaRouteButton.setVisibility(View.GONE);
}
}
}
ButtonFling2是我用来测试MyMediaRouterCallback工作与否的ImageView。它成功隐藏/显示imageView。但是对于button_fling(这是一个mediaRouteButton实例)没有显示任何内容。这就好像它找不到MediaRouteButton的资源所以它没有显示任何强制转换图标......任何人都修复过这个或遇到过这个问题?
我没有得到任何错误,它只是没有显示,但是日志显示它是可见的,我用于测试的ImageView显示。
答案 0 :(得分:2)
在摆弄这件事之后,我能够让媒体路由器按钮显示出来。我不完全确定我做了什么,但我确认了appid并尝试使用我列入白名单的应用ID。我重新安装了支持库。感谢所有人为此提供帮助!
我不是百分百确定这是怎么发生的,但我希望这有助于某人弄清楚或者至少可以解决这个问题。 ActionBar活动和非操作栏活动现在显示媒体路由器按钮! :)
答案 1 :(得分:0)
实现onRouteChanged()回调而不是onRouteAdded()应解决问题。
Example code:
// for MediaRouterButtonActivity
@Override
public void onRouteChanged(MediaRouter router, RouteInfo route) {
if (++mRouteCount == 1) {
// Show the button when a device is discovered.
mMediaRouteButton.setVisibility(View.VISIBLE);
}
}