我知道这是一个相当普遍的问题,虽然通过stackoverflow搜索并且android developers site让我没有完整的图片。
CastMediaControlIntent.DEFAULT_MEDIA_RECEIVER_APPLICATION_ID
,我可以吗?我相信问题就在那里,但仍然是代码。由于某些其他原因,Cast Button可能无法显示。
清单:
...
android:theme="@style/Theme.AppCompat">
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
...
媒体路由器菜单,media_router.xml
:
<?xml version="1.0" encoding="utf-8"?>
<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_router_menu_title"
app:actionProviderClass="android.support.v7.app.MediaRouteActionProvider"
app:showAsAction="always"/>
</menu>
Graddle依赖项:
compile 'com.android.support:appcompat-v7:22.0.0'
compile 'com.android.support:mediarouter-v7:21.0.0'
compile 'com.google.android.gms:play-services:7.3.0'
在onCreate()
中调用buildMediaRouter():
private void buildMediaRouter(){
mMediaRouter = MediaRouter.getInstance(getApplicationContext());
// Create a route selector for the type of routes your app supports.
mMediaRouteSelector = new MediaRouteSelector.Builder()
.addControlCategory(MediaControlIntent.CATEGORY_LIVE_AUDIO)
.addControlCategory(MediaControlIntent.CATEGORY_LIVE_VIDEO)
.addControlCategory(MediaControlIntent.CATEGORY_REMOTE_PLAYBACK)
//default app ID because I don't need custom Receiver
.addControlCategory(CastMediaControlIntent.categoryForCast(CastMediaControlIntent.DEFAULT_MEDIA_RECEIVER_APPLICATION_ID))
.build();
}
创建选项菜单:
@Override
public boolean onCreateOptionsMenu(final Menu menu) {
super.onCreateOptionsMenu(menu);
// Inflate the menu and configure the media router action provider.
getMenuInflater().inflate(R.menu.media_router, menu);
// Attach the MediaRouteSelector to the menu item
MenuItem mediaRouteMenuItem = menu.findItem(R.id.media_route_menu_item);
MediaRouteActionProvider mediaRouteActionProvider =
(MediaRouteActionProvider) MenuItemCompat.getActionProvider(
mediaRouteMenuItem);
mediaRouteActionProvider.setRouteSelector(mMediaRouteSelector);
return true;
}
感谢任何帮助。
答案 0 :(得分:2)
回答你的问题:
注册您的演员设备后,请等待几分钟并重新启动设备,以便它可以获取新配置。一个常见的问题是为您的演员设备注册正确的序列号,很容易误认为0和O等,所以拍下序列号的照片并放大以读取值。
答案 1 :(得分:1)
根据以下示例的设置说明,
https://github.com/googlecast/CastVideos-android
也使用MediaRouteActionProvider,不需要注册接收器。
您可以使用此示例验证您的代码吗?另外一件事,我想到的是,您需要开发人员解锁您的chromecast设备。
要使用您的设备进行开发,请查看设备&#39;以下链接中的部分:https://developers.google.com/cast/docs/registration