Chromecast Android应用程序没有发现自定义接收器

时间:2014-07-13 16:20:29

标签: chromecast ssdp

我写了一个java chromecast接收器应用程序,它接受M-SEARCH广播消息并用HTTP / 1.1 200消息进行响应。发送响应后,Android应用程序也会调用device-desc.xml文件。但Android应用程序没有显示接收者名称。但是Fling应用程序(https://github.com/entertailion/Fling)能够毫无问题地发现接收器。

非常感谢任何帮助。

来自Chromecast安卓应用

的请求
M-SEARCH * HTTP/1.1
HOST: 239.255.255.250:1900
MAN: "ssdp:discover"
MX: 1
ST: urn:dial-multiscreen-org:service:dial:1

来自JAVA接收器应用的响应

HTTP/1.1 200 OK
HOST: 239.255.255.250:1900
CACHE-CONTROL: max-age=1800
EXT:
LOCATION: http://10.0.0.4:8008/ssdp/device-desc.xml
ST: urn:dial-multiscreen-org:service:dial:1
USN: uuid:{UUID}
BOOTID.UPNP.ORG: 7339
CONFIGID.UPNP.ORG: 7339

在8008上托管的device-desc.xml

<root xmlns="urn:schemas-upnp-org:device-1-0" xmlns:r="urn:restful-tv-org:schemas:upnp-dd">
    <specVersion>
    <major>1</major>
    <minor>0</minor>
    </specVersion>
    <URLBase>http://10.0.0.4:8008</URLBase>
    <device>
          <deviceType>urn:schemas-upnp-org:device:dail:1</deviceType>
          <friendlyName>Lava2</friendlyName>
          <manufacturer>Google Inc.</manufacturer>
          <modelName>Eureka Dongle</modelName>
        <UDN>uuid:{UUID}</UDN>
        <serviceList>
            <service>
                <serviceType>urn:schemas-upnp-org:service:dail:1</serviceType>
                <serviceId>urn:upnp-org:serviceId:dail</serviceId>
                <controlURL>/ssdp/notfound</controlURL>
                <eventSubURL>/ssdp/notfound</eventSubURL>
                <SCPDURL>/ssdp/notfound</SCPDURL>
            </service>
        </serviceList>
    </device>
</root>    

2 个答案:

答案 0 :(得分:1)

如果您使用的是官方Android SDK,则需要知道发现方法现在基于mDNS而不是UPnP。

答案 1 :(得分:0)

urn:schemas-upnp-org:service:dail:1

设备描述中的ServiceType不太可能是正确的:不仅“拨号”中有拼写错误,而且整个类型似乎已经组成:DIAL不是UPnP论坛标准。

您可能正在寻找的是您已在搜索回复中使用的urn:dial-multiscreen-org:service:dial:1。设备类型可能无关紧要,因为DIAL没有定义它。

此外,您需要在说明xml响应中包含Application­URL HTTP标头:这是SSDP之上的额外DIAL要求,请参阅spec