0

M-SEARCH ブロードキャスト メッセージを受け取り、HTTP/1.1 200 メッセージで応答する Java chromecast レシーバー アプリを作成しました。応答が送信されると、Android アプリは device-desc.xml ファイルも呼び出します。しかし、Android アプリには受信者名が表示されません。しかし、Fling アプリケーション ( https://github.com/entertailion/Fling ) は問題なく受信者を検出できます。

どんな助けでも大歓迎です。

Chromecast Android アプリからのリクエスト

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

2 に答える 2

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

デバイスの説明の ServiceType が正しい可能性は低いです。「dial」にタイプミスがあるだけでなく、タイプ全体がでっち上げのようです。DIAL は UPnP フォーラムの標準ではありません。

おそらく探しているのはurn:dial-multiscreen-org:service:dial:1、検索応答で既に使用しているものです。デバイス タイプは、DIAL で定義されていないため、おそらく重要ではありません。

また、説明の xml 応答に HTTP ヘッダーを含める必要がありApplication­URLます。これは、SSDP に加えて追加の DIAL 要件です。仕様を参照してください。

于 2014-07-14T13:05:49.203 に答える
1

公式の Android SDK を使用している場合は、検出方法が UPnP ではなく mDNS に基づいていることを知っておく必要があります。

于 2014-07-13T16:30:28.570 に答える