2015-06-07 2 views
-1

Я получаю сообщение Application not installed каждый раз, когда пытаюсь подключиться к Chromecast с пользовательским приемником. Я считаю, что проблемой может быть 1) неправильный процесс загрузки в Chromecast. 2) некоторая ошибка внутри JS-кода (я не уверен в этом ..)Невозможно установить пользовательский приемник на Chromecast

Пользовательский код получателя. Вероятно, ошибка внутри кода. Он должен декодировать сообщение JSON с строкой Base 64 в Image.

</head> 
<body> 
<img id="androidImage" src="" /> 
<script type="text/javascript" src="//www.gstatic.com/cast/sdk/libs/receiver/2.0.0/cast_receiver.js"></script> 
<script type="text/javascript"> 
    window.onload = function() { 
    cast.receiver.logger.setLevelValue(0); 
    window.castReceiverManager = cast.receiver.CastReceiverManager.getInstance(); 
    console.log('Starting Receiver Manager'); 

    // handler for the 'ready' event 
    castReceiverManager.onReady = function(event) { 
     console.log('Received Ready event: ' + JSON.stringify(event.data)); 
     window.castReceiverManager.setApplicationState("Application status is ready..."); 
    }; 

    // handler for 'senderconnected' event 
    castReceiverManager.onSenderConnected = function(event) { 
     console.log('Received Sender Connected event: ' + event.data); 
     console.log(window.castReceiverManager.getSender(event.data).userAgent); 
    }; 

    // handler for 'senderdisconnected' event 
    castReceiverManager.onSenderDisconnected = function(event) { 
     console.log('Received Sender Disconnected event: ' + event.data); 
     if (window.castReceiverManager.getSenders().length == 0) { 
     window.close(); 
     } 
    }; 

    // handler for 'systemvolumechanged' event 
    castReceiverManager.onSystemVolumeChanged = function(event) { 
     console.log('Received System Volume Changed event: ' + event.data['level'] + ' ' + 
      event.data['muted']); 
    }; 

    // create a CastMessageBus to handle messages for a custom namespace 
    window.messageBus = 
     window.castReceiverManager.getCastMessageBus(
      'urn:x-cast:com.it.innovations.smartbus'); 

    // handler for the CastMessageBus message event 
    window.messageBus.onMessage = function(event) { 
     console.log('Message recieved'); 

     var obj = JSON.parse(event.data) 

     console.log('Message type: ' + obj.type); 
     if (obj.type == "text") { 
     console.log('Skipping message: ' + obj.data); 
     } 

     if (obj.type == "image") { 
     var source = 'data:image/png;base64,'.concat(obj.data) 
     displayImage(source); 
     } 

     // inform all senders on the CastMessageBus of the incoming message event 
     // sender message listener will be invoked 
     window.messageBus.send(event.senderId, event.data); 
    } 

    // initialize the CastReceiverManager with an application status message 
    window.castReceiverManager.start({statusText: "Application is starting"}); 
    console.log('Receiver Manager started'); 
    }; 


    function displayImage(source) { 
    console.log('received image'); 
    document.getElementById("androidImage").src=source; 
    window.castReceiverManager.setApplicationState('image source changed'); 
    }; 

</script> 

пс. Пространство имен такое же, как в приложении-отправителе.

Процесс установки пользовательского приемника:

  1. Созданный .js файл (также пытался .html) с кодом выше.
  2. Создал этот файл на Google Диске (link). Также попробовал файл .html и ссылку с прямой загрузкой файла.
  3. Made link world visible.
  4. Добавлен эту ссылку в Cast консоли для зарегистрированного пользовательского приемника в поле URL
  5. Использование APP ID в отправителе приложения зарегистрированного приемника.

Кажется, он пытается установить этот приемник каждый раз, когда я подключаюсь к Chromecast, но затем он занимает несколько секунд (экран черный) и сбой с кодом 15 (таймаут). Я пытался использовать идентификатор APP по умолчанию, а затем он правильно подключается к приемнику, но он не способен декодировать строку.

Также я не могу отлаживать приемник на chromecast-ip: 9222, так как он еще не установлен.

Буду признателен за любую помощь. Благодарю.

ответ

2

Сначала разрешите проблему с хостингом. Использование Google Диска для хостинга во время разработки вашего приемника в порядке, но вам нужно выполнить определенные шаги, чтобы убедиться, что он размещен правильно. Пожалуйста, обратитесь к this page, чтобы увидеть правильные шаги; если он правильно размещен, ваш URL должен выглядеть так: www.googledrive.com/host/[doc id]

+0

Да, я точно следил за ним. Но похоже, что Google отключил хостинг. Вот что говорит [этот учебник] (http://www.labnol.org/internet/host-website-on-google-drive/28178/). Я использовал [скрипты Google] (https://script.google.com/macros/s/AKfycbz7Mb1OJWnFz_osp7K9G_4wesHlzyPZYOtbBFu--prJj1Hb1C83/exec), чтобы разместить его таким образом. – AnZ

+1

Я не думаю, что что-то изменилось; следуйте инструкциям (вместо использования сценария) и зарегистрируйте свой URL как «https://www.googledrive.com/host/{doc id» и обновите URL-адрес получателя в этом формате и посмотрите, работает ли это или не. –

+0

Хорошо, похоже, что он размещен на сайте - www.googledrive.com/host/0Bz2Lss3i7uJHZGRKLUx3amJLOTQ. Но я не могу поместить эту ссылку в Cast Console, см. [Этот экран] (http://i.imgur.com/96igCBd.png). – AnZ