使用CastCompanionLibrary向ActionBar添加强制转换按钮

时间:2014-02-18 12:16:22

标签: android google-cast

我正在尝试使用CastCompanionLibrary的帮助方法将强制转换图标添加到ActionBar中:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);
    getMenuInflater().inflate(R.menu.main, menu);
    mDataCastManager.addMediaRouterButton(menu, R.id.media_route_menu_item); // This one
    return true;
}

我将此作为我的menu.xml,由随附库中包含的PDF指定:

<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_route_menu_title"
        app:actionProviderClass="android.support.v7.app.MediaRouteActionProvider"
        app:showAsAction="always"/>
</menu>

然而,ActionBar中没有任何内容。不会抛出任何错误,根本没有任何错误可见。如果我添加一个不同的菜单项只是为了看看我的菜单中的所有内容是否设置正确,那么该项目显示正常 - 只是这个投射动作菜单项目没有显示出来。

我试过更改&#34; app&#34;前缀为&#34; android&#34;,但随后我在库中深处某处NullPointerException,我尝试给菜单项提供一个不同的可见图标。什么都没有帮助。

在AndroidStudio中,菜单预览会显示一个标题为&#34;播放...&#34;的菜单项,所以看起来这应该有效。

我做错了什么?

4 个答案:

答案 0 :(得分:2)

您必须将chrome-cast注册为测试设备,以便能够从Android检测chromecast设备。

检查完整的SDK guide
检查开发人员console注册。您必须在控制台中注册chromecast devise,否则无法检测到

更新:如果无效,您可以尝试在chromecast开发者控制台中发布您的应用作为最后的手段。

正如其中一位chromecast开发人员所说,尝试从浏览器访问http://<chromecast-ip>:9222,看看你是否能看到任何东西。

答案 1 :(得分:1)

有时会发生这些类型的错误,因为proguard会更改对象和/或函数的名称。

一种可能的解决方案是将这些添加到progaurd配置文件中:

-dontwarn android.support.v7.**
-keep class android.support.v7.internal.** { *; }
-keep interface android.support.v7.internal.** { *; }
-keep class android.support.v7.** { *; }
-keep interface android.support.v7.** { *; }

我确实在确切的行上有这个确切的错误,我没有为支持库正确配置我的proguard。

答案 2 :(得分:1)

在设备注册后的情况下,我忘了重新启动chromecast设备

答案 3 :(得分:0)

CastCompanionLibrary和MediaRouteActionProvider是为AppCompat ActionBar而不是Sherlock ActionBar编写的。强烈建议将项目移至AppCompat,因为Sherlock ActionBar已弃用,因此迁移到AppCompat通常是您项目的一个好举措;做出这一举动并不困难(例如,参见article