无法从我的 Android 应用程序向接收方应用程序发送 json 消息。
安卓应用
- 我已经创建了我的自定义 MessageStream 并且我正在使用这个命名空间“com.jujuy.chromecast”。
从 session 中获取 channel 后,我将 MyCustomMessageStream 附加到它,然后调用该方法来发送消息。
MyCustomMessageStream cm = new MyCustomMessageStream(); channel.attachMessageStream(cm);
cm.sendTestMessage("你好!");
接收器应用
var receiver = new cast.receiver.Receiver(
APP-ID,
["com.jujuy.chromecast"],
"",
5);
var channelHandler = new cast.receiver.ChannelHandler("com.jujuy.chromecast"); // I think it's not necessary to use com.jujuy.chromecast
channelHandler.addEventListener(cast.receiver.Channel.EventType.MESSAGE, onMessage.bind(this));
channelHandler.addChannelFactory(receiver.createChannelFactory("com.jujuy.chromecast"));
receiver.start();
// message listener
function onMessage(event) {
document.getElementById("messageLabel").innerHTML = event.message.type;
}
开始 session 后 () 我收到此消息 “启动应用程序失败:未收到 channel 信息” 在 onSessionStartFailed() 方法上,电视屏幕变黑。
我认为世界“com.jujuy.chromecast”有问题,我在其他示例中看到他们使用 cast.receiver.RemoteMedia.NAMESPACE,我不确定是否可以使用 MyCustomMessageStream 中使用的命名空间来更改它.
我在 TicTacToe 示例中看到他们使用与文档所述不同的方式来获取 de CastDevice 对象。这可能是问题所在吗?
我的 chromecast 已列入白名单,我可以毫无问题地运行许多示例。
我使用自定义接收器应用来测试播放视频和音频。有什么想法吗?
最佳答案
这很可能是因为发送方的命名空间与接收方的命名空间不匹配。您需要确保将其作为参数传递给自定义 MessageStream 的构造函数。
这是一个例子:
public class MyCustomMessageStream extends MessageStream {
private static final String APP_NAMESPACE = "com.jujuy.chromecast";
protected MyCustomMessageStream(){
super(APP_NAMESPACE);
}
public final void sendTestMessage(String message){
// ...
}
//...
}
您不需要使用远程媒体命名空间来发送消息,那是为了媒体播放。这是一个更深入的答案:https://stackoverflow.com/a/18499253/1839298
起初我无法让我的包命名空间工作,你可以尝试一个单词命名空间,比如“TEST”,看看你是否能让它工作然后从那里继续。
关于chromecast - 无法将 json 消息从 Android 应用程序发送到 Chromecast 接收器应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18543952/