3

无法从我的 android 应用程序向接收方应用程序发送 json 消息。

安卓应用

  • 我已经创建了我的自定义 MessageStream,并且正在使用这个命名空间“com.jujuy.chromecast”。
  • 从会话中获取通道后,我将 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;
}

启动会话 () 后,我在 onSessionStartFailed() 方法上收到此消息“无法启动应用程序:未收到频道信息”,并且电视屏幕变黑。

我认为世界“com.jujuy.chromecast”有问题,我在其他示例中看到他们使用 cast.receiver.RemoteMedia.NAMESPACE,我不确定是否可以使用 MyCustomMessageStream 中使用的命名空间来更改它。

我在 TicTacToe 示例中看到他们使用与文档所述不同的方式来获取 de CastDevice 对象。可能是这个问题吗?

我的 chromecast 被列入白名单,我可以毫无问题地运行许多示例。

我使用自定义接收器应用程序来测试播放视频和音频。任何想法?

4

1 回答 1

1

这很可能是因为您在发送方的命名空间与接收方的命名空间不匹配。您需要确保将其作为参数传递给自定义 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”,看看你是否可以让它工作,然后从那里继续。

于 2013-11-05T15:13:22.973 回答