Chromecast 按钮在 android 中不可见

Chromecast button not visible in android

我正在关注code lab tutorial

我的 Gradle 文件看起来像这样

dependencies {
compile 'com.android.support:appcompat-v7:25.0.0'
compile 'com.android.support:mediarouter-v7:25.0.0'}

这是我的 CastOptionsProvider class

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" />

我已经完全按照代码实验室教程的形式进行操作,复制并粘贴所有内容,同时更改需要更改的变量。 我的应用程序和 chromecast 设备连接到同一网络。 Chromecast 按钮出现在 Youtube 应用程序中,但未出现在我的应用程序中。我错过了什么? 谢谢

这里缺少属性图标

     <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>

它可能无效 app_id。

您可以尝试用示例项目中的 app_id 字符串资源值替换您的 chromecast_app_id 字符串资源。

(现在是 4F8B3483。参见:https://github.com/googlecast/CastVideos-android/blob/master/res/values/strings.xml)。

信不信由你,切换到该值会使投射图标在我的应用程序中可见。

如果一切正常,您只需要重新启动投射设备(它不适用于您的 app_id 注册后不重新启动)。

如果您的应用程序 ID 正确且状态为已发布,请签入 Google Cast SDK Developer Console

发布您的应用程序 ID 时,请重新启动您的 Chromecast 设备。

出于测试目的,您可以使用 CC1AD845 或 4F8B3483 作为应用程序 ID。这些来自 Google 个示例应用程序。

添加另一个答案作为已接受的答案对我没有任何帮助。只有在构建我的应用程序的保护版本时,这个问题才会发生在我身上。

我不得不在我的混淆器文件中添加几行(基本上是 xml 引用的所有 类,如此处所述:)

-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 { *; }