gpt4 book ai didi

android - Chromecast 自定义命令不起作用

转载 作者:行者123 更新时间:2023-11-30 03:25:52 24 4
gpt4 key购买 nike

有人能够在 ChromeCast API 中添加自定义命令吗?我成功地让 TicTacToe 示例与我的开发人员 ID 以及修改后的协议(protocol)字符串(在客户端和服务器上都发生了变化)一起工作。

在 Android 端,我现有的“join”命令有效,我正在添加一个新的“image”命令:

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 连接 channel 失败:协议(protocol)错误”

在 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 原型(prototype):

/**
* 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;

},

最佳答案

这通常意味着您的接收器中存在 JavaScript 错误。在您的 ChromeCast 设备的 IP 地址的端口 9222 上打开 Chrome,并使用 Chrome 开发者工具来调试问题。

您是否在消息处理程序的接收器原型(prototype)中声明了一个新函数“onImage”?

关于android - Chromecast 自定义命令不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18261413/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com