2013-08-31 1 views
3

Не удается отправить сообщение json из приложения Android в приложение-получатель.Невозможно отправить сообщение json из приложения android в приложение для приема хромового сигнала

Android App

  • Я создал свой собственный MessageStream, и я использую это пространство имен "com.jujuy.chromecast".
  • Как только я получаю канал из сеанса, я подключаю к нему MyCustomMessageStream и вызываю метод отправки сообщения.

    MyCustomMessageStream cm = new MyCustomMessageStream(); channel.attachMessageStream (см);

    cm.sendTestMessage ("Hello!");

Receiver App

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 они используют другой способ получить объект CastDevice, чем говорится в документации. Может быть, это проблема?

Мой хромометр белый, и я смог запустить множество примеров без проблем.

Я использовал пользовательское приложение-получатель для тестирования воспроизведения видео и аудио. Есть идеи?

+0

В конструкторе класса 'MyCustomMessageStream' вы назвали' super ("com.jujuy.chromecast"); 'чтобы задать пространство имен для класса' 'MessageStream''? – anthonylawson

ответ

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», чтобы посмотреть, сможете ли вы получить эту работу, ,