尝试进行DIAL发现并在Sony Bravia TV(Android)上启动。注意:不尝试执行Google Cast ...,而是尝试使用DIAL查找并启动已安装的应用程序。 UDP发现SEARCH给了我这个。

HTTP/1.1 200 OK
CACHE-CONTROL: max-age=1800
DATE: Mon, 15 Aug 2016 19:09:52 GMT
EXT:
LOCATION: http: // 10.180.12.183:8008 /ssdp/device-desc.xml
OPT: "http://schemas.upnp.org/upnp/1/0/"; ns=01
01-NLS: 4185dfde-1dd2-11b2-845e-c7225b044ee1
SERVER: Linux/3.10.27, UPnP/1.0, Portable SDK for UPnP devices/1.6.18
X-User-Agent: redsonic
ST: urn:dial-multiscreen-org:service:dial:1
USN: uuid:25664941-9d79-be82-aab6-39c4cdda7052::urn:dial-multiscreen-org:service:dial:1
BOOTID.UPNP.ORG: 0
CONFIGID.UPNP.ORG: 1869286273


检索位置http:// // 10.180.12.183:8008 /ssdp/device-desc.xml给我这个标头:

Application-Url: http: // 10.180.12.183:8008 /apps/
Content-Length: 1081
Content-Type: application/xml


该响应的内容是这样的:

<?xml version="1.0"?>
<root xmlns="urn:schemas-upnp-org:device-1-0">
  <specVersion>
    <major>1</major>
    <minor>0</minor>
  </specVersion>
  <URLBase>http: // 10.180.12.183:8008 </URLBase>
  <device>
    <deviceType>urn:dial-multiscreen-org:device:dial:1</deviceType>
    <friendlyName>MySonyTv</friendlyName>
    <manufacturer>Sony</manufacturer>
    <modelName>BRAVIA 4K 2015</modelName>
    <UDN>uuid:25664941-9d79-be82-aab6-39c4cdda7052</UDN>
    <iconList>
      <icon>
        <mimetype>image/png</mimetype>
        <width>98</width>
        <height>55</height>
        <depth>32</depth>
        <url>/setup/icon.png</url>
      </icon>
    </iconList>
    <serviceList>
      <service>
        <serviceType>urn:dial-multiscreen-org:service:dial:1</serviceType>
        <serviceId>urn:dial-multiscreen-org:serviceId:dial</serviceId>
        <controlURL>/ssdp/notfound</controlURL>
        <eventSubURL>/ssdp/notfound</eventSubURL>
        <SCPDURL>http: // www .google.com/ cast</SCPDURL>
      </service>
    </serviceList>
  </device>
</root>


根据DIAL REST服务的DIAL协议规则,我应该使用以下方法获取有关我的应用程序的信息:

http: // 10.180.12.183:8008 /apps/MyAppName


但是我得到一个“ 404:未找到”和一个空文本响应。如果将“ YouTube”或“ Netflix”作为后缀而不是MyAppName,则会得到有意义的XML响应。

一旦我对标准的DIAL REST GET查询获得了良好的响应,我希望对相同的URL进行DIAL REST POST,以启动我的应用程序-就像我已经能够使用支持DIAL的其他设备一样。

我的问题(希望对Sony peronnel或熟悉基于Sony Android电视的DIAL的Sony开发专家。我不需要有关客户端发现/启动的一般DIAL教程,并且如果我决定这样做,则不知道如何编写DIAL服务器做):


索尼基于Android的电视实际上是否支持DIAL(不仅限于Google Cast V2或V3)?如果是这样,电视上Android应用程序中的哪个属性代表我应该在DIAL REST后缀中使用的应用程序名称?
我是否需要在电视应用程序的AndroidManifest.xml中添加一些其他条目,或者是否还需要其他资源(类似于Amazon Fire TV,它需要xml / whisperplay.xml资源,该资源包含xml条目“ dial / application / dialid”,用于发现/启动的Fire DIAL服务器)?
您还能告诉我有关DIAL服务器基于Sony Android电视的电视实现的独特方面的信息吗?


注意:请记住...对Google Cast不感兴趣-我需要启动一个应用程序,而不仅仅是投放标准视频。另外,很乐意使用Sony可能提供的专有发现/启动机制...但是,我将需要知道该机制的工作原理,因此,如果能解决此问题,将不胜感激。

最佳答案

我有一个2015 Bravia,这是格式化网址的方法:

http://192.168.1.100/DIAL/apps/com.sony.dtv.com.alexvas.dvr.pro.com.alexvas.dvr.activity.TvMainActivity

我不知道为什么需要com.sony.dtv,但是其余的URL由应用程序ID(在本例中为com.alexvas.dvr.pro)组成,然后由您要启动的应用程序中的活动组成(com.alexvas.dvr.activity.TvMainActivity)

在端口80上发布到该URL会启动我的应用程序。

08-17 20:59