【问题标题】:Chromecast Sender and Receiver CommunicationChromecast 发送方和接收方通信
【发布时间】:2016-01-22 04:24:31
【问题描述】:

根据 Google Custom Receiver 文档,如果我们的应用执行身份验证,我们可以在我们的发送应用中加载 json 格式的 customData。就我而言,我做了类似以下的事情,

MediaInfo mediaInfo = new MediaInfo.Builder(
           "url")
             .setStreamType(MediaInfo.STREAM_TYPE_BUFFERED)
             .setCustomData(jsonCustomData) 
             .build();

然后像下面这样加载 mediaInfo,

mRemoteMediaPlayer.load(mApiClient, mediaInfo, true).setResultCallback(....);

在我的接收器应用程序中,我尝试检索 jsonCustomData,如下所示,

var customData = window.mediaManager.LoadRequestData.customData;

但是,它似乎不起作用。我注意到在一些示例应用程序中,有些人使用 Cast.CastApi.sendMessage 方法,并使用 window.message.onMessage=function(event) 其中 event.data 将包含消息。有人可以解释这两种方法之间的区别吗?我做错了什么?

请注意,我的接收器代码没有包含 window.onload 函数,我需要吗?

感谢您的帮助!

【问题讨论】:

    标签: javascript android google-api chromecast android-cast-api


    【解决方案1】:

    您可能想要挂钩 mediaManager.onLoad(event) 回调(请参阅this 了解如何正确执行此操作;您需要确保在实现中调用原始 onLoad)。然后,如果我没记错的话,event.data 应该是cast.receiver.mediaManager.LoadRequestData 类型。如果是这样,event.data.media.customData 应该具有您在 mediaInfo 中指定的自定义数据。如果您在 mRemoteMediaPlayer.load() 命令中使用 customData(而不是 mediaInfo),那么它应该可以在同一个回调中但通过 event.data.customData 访问。请根据接收方 API 参考验证这一点,以确保它们是正确的。

    【讨论】:

    • MediaInfo 是您作为参数传递给 .load() 的内容。
    • 因为您说“如果您在 mRemoteMediaPlayer.load() 命令中使用 customData(而不是 mediaInfo)。”我是说这两个东西不是相互排斥的,其中 customData 是您构造 MediaInfo 的内容,而 MediaInfo 是您传递给 .load() 的参数。就这样!感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-08
    • 2018-06-29
    相关资源
    最近更新 更多