有没有办法在WebView中显示Chromecast按钮?

时间:2019-03-28 10:36:26

标签: android cordova webview chromecast

我目前正在使用Cordova开发一个Android应用程序。到目前为止,此功能尚可,但现在我想向用户界面添加Chromecast按钮,因此它似乎无法正常工作。我按照此处提供的说明进行操作:https://developers.google.com/cast/docs/chrome_sender/integrate

这是到目前为止我的代码:

        var CastPlayer = function() {
            //...
            /* Cast player variables */
            /** @type {cast.framework.RemotePlayer} */
            this.remotePlayer = null;
            /** @type {cast.framework.RemotePlayerController} */
            this.remotePlayerController = null;
            //...
        };

        var castPlayer = new CastPlayer();
        window['__onGCastApiAvailable'] = function(isAvailable) {
            if (isAvailable) {
                castPlayer.initializeCastPlayer();
            }
        };

我的index.html中的内联脚本。

CastPlayer.prototype.initializeCastPlayer = function() {

var options = {};

// Set the receiver application ID to your own (created in the
// Google Cast Developer Console), or optionally
// use the chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID
options.receiverApplicationId = chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID;

// Auto join policy can be one of the following three:
// ORIGIN_SCOPED - Auto connect from same appId and page origin
// TAB_AND_ORIGIN_SCOPED - Auto connect from same appId, page origin, and tab
// PAGE_SCOPED - No auto connect
options.autoJoinPolicy = chrome.cast.AutoJoinPolicy.ORIGIN_SCOPED;

cast.framework.CastContext.getInstance().setOptions(options);

this.remotePlayer = new cast.framework.RemotePlayer();
this.remotePlayerController = new cast.framework.RemotePlayerController(this.remotePlayer);
this.remotePlayerController.addEventListener(
    cast.framework.RemotePlayerEventType.IS_CONNECTED_CHANGED,
    this.switchPlayer.bind(this)
);
};

我的index.js的内容。

在index.html中,我添加了这样的按钮:

<google-cast-launcher id="castbutton"></google-cast-launcher>

现在,当我通过浏览器(Chrome和Chromium)打开Cordova应用程序时,将显示投射按钮,并且我可以正常使用它。当我在Android上打开应用程序时,按钮不会显示。有人知道是什么原因导致的吗?是否可以解决?

1 个答案:

答案 0 :(得分:0)

我们找不到 Cordova 的解决方案,但在 Flutter 中进行了管理。

我们遇到了同样的挑战,我们四处寻找。终于找到了这个解决方案,使其适用于:https://pub.dev/packages/dart_chromecast

确保您的 flutter 编译器已降级到 13 或以下。否则,您将无法编译。不幸的是,较新版本的 flutter 编译器不支持他们的代码,作者不会很快更新。