我正在关注code lab tutorial。
我的Gradle文件看起来像这样
dependencies {
compile 'com.android.support:appcompat-v7:25.0.0'
compile 'com.android.support:mediarouter-v7:25.0.0'}
这是我的CastOptionsProvider类
public class CastOptionsProvider implements OptionsProvider {
@Override
public CastOptions getCastOptions(Context context) {
return new CastOptions.Builder()
.setReceiverApplicationId(context.getString(R.string.chromecast_app_id))
.build();
}
@Override
public List<SessionProvider> getAdditionalSessionProviders(Context context) {
return null;
}}
这是菜单xml文件
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<item
android:id="@+id/media_route_menu_item"
android:title="@string/media_route_menu_title"
app:actionProviderClass="android.support.v7.app.MediaRouteActionProvider"
app:showAsAction="always" /></menu>
这是我在MainActivity中的OnCreateOptionsMenu方法
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
getMenuInflater().inflate(R.menu.navigation_drawer, menu);
mediaRouteMenuItem = CastButtonFactory.setUpMediaRouteButton(getApplicationContext(), menu, R.id.media_route_menu_item);
return true;
}
这在清单文件中
<meta-data
android:name="com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME"
android:value="com.mypackage.CastOptionsProvider" />
我遵循了codelab教程的确切形式,复制并粘贴了所有内容,同时更改了需要更改的变量。 我的应用程序和chromecast设备连接到同一网络。 Chromecast按钮会显示在Youtube应用中,但不会出现在我的应用中。我错过了什么? 感谢
答案 0 :(得分:1)
它可能是无效的app_id。
您可以尝试使用示例项目中的app_id字符串资源值替换chromecast_app_id字符串资源。
(现在,它是4F8B3483。见:https://github.com/googlecast/CastVideos-android/blob/master/res/values/strings.xml)。
信不信由你,切换到该值会使我的应用中显示投射图标。
答案 1 :(得分:1)
如果一切正常,您只需要重新启动演员设备(注册后无需重新启动就无法使用app_id)。
答案 2 :(得分:1)
如果您的应用程序ID正确且状态为已发布,请签入Google Cast SDK Developer Console。
发布应用程序ID时,请重新启动Chromecast设备。
出于测试目的,您可以使用CC1AD845或4F8B3483作为应用程序ID。这些来自Google示例应用。
答案 3 :(得分:0)
添加另一个答案作为已接受的答案对我没有任何帮助。仅当构建我的应用程序的受保护版本时,该问题才发生。
我必须在我的proguard文件中添加几行(基本上是xml所引用的所有类,如此处所述:https://stackoverflow.com/a/24578823/1048847)
-keep class com.your.package.CastOptionsProvider { *; }
// I have a custom MediaRouteActionProvider but this may need to be
// android.support.v7.app.MediaRouteActionProvider in the case of OP
-keep class com.your.package.MediaRouteActionProvider { *; }
答案 4 :(得分:-2)
你在这里缺少属性图标
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<item
android:id="@+id/media_route_menu_item"
android:title="@string/media_route_menu_title"
android:icon="@drawable/chromebutton" app:actionProviderClass="android.support.v7.app.MediaRouteActionProvider"
app:showAsAction="always" /></menu>