Chromecast 自定义命令不起作用
Posted
技术标签:
【中文标题】Chromecast 自定义命令不起作用【英文标题】:Chromecast Custom Commands Not Working 【发布时间】:2013-08-15 20:40:01 【问题描述】:是否有人能够在 ChromeCast API 中添加自定义命令?我成功地将井字游戏示例与我的开发人员 ID 以及修改后的协议字符串(在客户端和服务器上都更改了)一起工作。
在 android 端,我有现有的“加入”命令,我正在添加一个新的“图像”命令:
public final void join(String name)
try
Log.d(TAG, "join: " + name);
JSONObject payload = new JSONObject();
payload.put(KEY_COMMAND, KEY_JOIN);
payload.put(KEY_NAME, name);
sendMessage(payload);
catch (JSONException e)
Log.e(TAG, "Cannot create object to join a game", e);
catch (IOException e)
Log.e(TAG, "Unable to send a join message", e);
catch (IllegalStateException e)
Log.e(TAG, "Message Stream is not attached", e);
public final void sendImage(String sURL)
try
Log.d(TAG, "sendImage");
JSONObject payload = new JSONObject();
payload.put(KEY_COMMAND, KEY_IMAGE);
payload.put(KEY_URL, sURL);
sendMessage(payload);
catch (JSONException e)
Log.e(TAG, "Cannot create object to send image", e);
catch (IOException e)
Log.e(TAG, "Unable to send an image message", e);
catch (IllegalStateException e)
Log.e(TAG, "Message Stream is not attached", e);
如果我调用 join 命令,它可以正常工作,并且我可以在浏览器中看到通过控制台记录的消息。但是如果我调用 sendImage 函数,我会得到以下错误:
“onEnded 连接通道失败:协议错误”
在 ChromeCast 方面,我可以看到收到有效命令的时间。这个函数在我发送加入命令时被调用,但在我发送自定义“图像”命令时不会被调用。
/**
* Message received event; determines event message and command, and
* choose function to call based on them.
* @param event event the event to be processed.
*/
onMessage: function(event)
console.log('***== pre onMessage ==***');
var message = event.message;
var channel = event.target;
console.log('********onMessage********' + JSON.stringify(message));
console.log('mPlayer1: ' + this.mPlayer1);
console.log('mPlayer2: ' + this.mPlayer2);
if (message.command == 'join')
this.onJoin(channel, message);
else if (message.command == 'leave')
this.onLeave(channel);
else if (message.command == 'move')
this.onMove(channel, message);
else if (message.command == 'queue_layout_request')
this.onQueueLayoutRequest(channel);
else if (message.command == 'image')
this.onImage(channel, message);
else if (message.command == 'video')
this.onVideo(channel, message);
else if (message.command == 'song')
this.onSong(channel, message);
else
cast.log.error('Invalid message command: ' + message.command);
,
有什么想法吗?在其他地方我需要定义我的自定义命令吗?
已编辑:还显示了 onImage 原型:
/**
* Image event: display an image
* @param cast.receiver.channel channel the source of the move, which
* determines the player.
* @param Object|string message contains the URL of the image
*/
onImage: function(channel, message)
console.log('****onImage: ' + JSON.stringify(message));
//Hide video and show image
mVideo.style.visibility='hidden';
mImage.style.visibility='visible';
mImage.src = message.url;
,
【问题讨论】:
【参考方案1】:这通常意味着您的接收器中存在 javascript 错误。在 ChromeCast 设备的 IP 地址的端口 9222 上打开 Chrome,并使用 Chrome 开发人员工具来调试问题。
您是否在消息处理程序的接收器原型中声明了一个新函数“onImage”?
【讨论】:
是的,我一直在查看 chrome 开发人员工具,并在收到 join 命令时看到控制台消息。当我最初遇到 javascript 错误时,我会在控制台中看到它们。但是现在我在发送该图像命令时看不到任何新行 - 就像它没有达到 javascript 那样。上面的代码是我添加接收器原型的地方。你说的还有别的地方吗? 建议您重启 ChromeCast 设备。有时它似乎会缓存旧版本的接收器。另外,请在开发者工具设置中启用“导航时保留日志”,以防接收器因某种原因关闭。 我每次更改 javascript 代码时都重新启动了 ChromeCast 设备,但它没有帮助。但几个小时后回来后,我现在看到 ChromeCast 上实际正在处理“图像”命令。也许缓存发生在谷歌服务器上?我在想 ChromeCast 设备是直接从我的网络服务器获取的——但也许不是。感谢您的帮助!以上是关于Chromecast 自定义命令不起作用的主要内容,如果未能解决你的问题,请参考以下文章
asp.net core kendo ui 网格自定义命令模板不起作用
“Ctrl + F6”的默认处理在自定义 MDI 应用程序中不起作用
自定义操作不起作用 msiexec /a - Visual Studio 安装项目