Chromecast按钮在Android中不可见

时间:2017-01-23 05:27:14

标签: java android chromecast

我正在关注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应用中,但不会出现在我的应用中。我错过了什么? 感谢

5 个答案:

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