3

我正在做一个应用程序,它在启用 upnp 的电视机中呈现网页。我已经使用Cling UPnP实现了 UPnP 现在我不确定如何进一步进行。电视和设备之间的连接是如何实现的?是套接字连接吗?有没有人有关于这个主题的任何示例或教程,可以帮助我实现 UPnP 流。

我在 google 上搜索过,但它主要指向 google play 中可用的现有应用程序。谢谢

4

1 回答 1

5

好的,所以服务描述符 xml (SCPD) 包含<actionList>s<action>及其参数,可以是in(对电视)或out(将在电视对动作的响应中)。您需要“调用”该操作,这意味着 Cling 将其序列化为 SOAP RPC 并将其作为 HTTP 请求发送到设备。在响应中,您将获得调用的整体结果,与普通 HTTP 一样,200 表示 OK,500 表示错误请求等。每个代码在特定操作调用的上下文中都有特定的解释。响应还将out包含 SCPD 中指定的参数。

但是当使用像 Cling 这样的抽象库时,这一切都不是你感兴趣的。它会为你做一切。免责声明:我不熟悉 Cling,只是有足够的其他 UPnP 库知道在哪里寻找东西。

作为电视机,你提到的 3 项服务无疑是AVTransport,ConnectionManagerRenderingControl. 因此,为了展示一个实际可以在电视上观察到的事情的简单示例,让我们调用RenderingControl.SetVolume. 你需要的方法是org.teleal.cling.support.renderingcontrol.callback.SetVolume。我无法帮助您知道从哪里获取Service参数,但是您应该能够弄清楚。

我并不是说你不需要知道 UPnP 是如何工作的。获取UPnP 规范包并至少阅读DeviceArchitecture pdf 是必不可少的。而且您肯定需要规范来了解更复杂的服务,例如AVTransport. 提示:不要关心 InstanceID 和 ConnectionID。除非您连接到非常先进的渲染器(现在的电视没有),否则它都是 0

于 2012-09-12T12:37:54.380 回答