【问题标题】:Chromecast android app is not discovering custom receiverChromecast android 应用程序未发现自定义接收器
【发布时间】:2014-09-03 16:10:48
【问题描述】:

我编写了一个 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

device-desc.xml 托管在 8008 上

<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>    

【问题讨论】:

    标签: chromecast ssdp


    【解决方案1】:
    urn:schemas-upnp-org:service:dail:1
    

    设备描述中的 ServiceType 不太可能是正确的:不仅“dial”中有错字,而且整个类型似乎是编造的:DIAL 不是 UPnP 论坛标准。

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2019-02-15
        • 1970-01-01
        • 2014-12-29
        • 2017-08-19
        • 2013-10-12
        • 2014-06-17
        • 1970-01-01
        • 2014-10-04
        • 2014-12-25
        相关资源
        最近更新 更多