【问题标题】:Cast button not displaying投射按钮不显示
【发布时间】:2015-08-16 10:07:04
【问题描述】:

我知道这是一个很常见的问题,尽管通过 stackoverflow 和 android developers site 搜索让我一无所知。

  1. 是否需要在 Google Cast SDK 开发者控制台中注册应用程序?我不需要自定义接收器,所以我可以使用CastMediaControlIntent.DEFAULT_MEDIA_RECEIVER_APPLICATION_ID,可以吗?
  2. 如果我注册应用程序并收到它的 ID 但不发布它,它是否允许我使用 Google Cast 功能?
  3. 注册设备。我需要注册手机的序列号还是 Chromecast 的序列号?或两者?

我相信问题出在那儿,但仍然是代码。可能由于其他原因,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>

Gradle 依赖项:

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'

buildMediaRouter()onCreate() 中调用:

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

感谢任何帮助。

【问题讨论】:

    标签: android casting chromecast google-cast


    【解决方案1】:

    按照以下示例的设置说明,

    https://github.com/googlecast/CastVideos-android

    同样使用MediaRouteActionProvider,不需要注册的receiver。

    您能否使用此示例验证您的代码。我想到的另一件事是,您可能需要开发人员解锁您的 chromecast 设备。

    如需使用您的设备进行开发,请查看以下链接中的“设备”部分:https://developers.google.com/cast/docs/registration

    【讨论】:

    • 感谢您的回答。 “解锁 chromecast 设备”是什么意思?
    【解决方案2】:

    回答您的问题:

    1. 只要您不需要自定义或样式化的接收器并且可以使用默认接收器,那么您就不需要注册任何东西。
    2. 如果您注册了某个应用但未发布该应用,则只有您已添加到注册中的投射设备才能看到该应用,其他投射设备将无法加载您的应用。
    3. 如果您注册了应用程序,则只有已注册的投射设备才能看到您的应用程序(只要您的应用程序未发布)。发布应用后,任何投射设备都可以加载您的应用。出于开发目的,设备的注册仅适用于投射设备,而不适用于发送设备。

    注册您的投射设备后,请等待几分钟,然后重新启动您的设备,以便它可以使用新配置。一个常见的问题是为您的投射设备注册正确的序列号,很容易弄错 0 和 O 等,因此请拍下序列号的照片并放大以读取值。

    【讨论】:

    • 感谢您的明确回答。所以我做的一切都是正确的,在我注册 Chromecast Cast 按钮后应该会出现?
    • 是的,可能在重新启动 chromecast 之后
    猜你喜欢
    • 2014-06-23
    • 1970-01-01
    • 2014-03-21
    • 2023-03-18
    • 2016-09-05
    • 2014-06-13
    • 2017-01-29
    • 2021-10-15
    相关资源
    最近更新 更多