java - UPnP 如何工作?

标签 java android upnp

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

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

最佳答案

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

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

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

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

关于java - UPnP 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12370287/

相关文章:

java - 正则表达式拒绝 '_'

android - 有哪些解决方案来保证服务器端和移动客户端通信的安全?

c++ - 使用 UPnP 进行移植

java - 如何设计实体以存储预定义字段

java - 单元测试 : finding class dependencies

java - mvn spring-boot :run doesn't start spring

c++ - 在 Windows 上编译 libupnp

java - 从另一个 View 更改 View 的尺寸

java - E/AndroidRuntime : FATAL EXCEPTION: main Process: com. example.gameshopservicesdz,PID:14488

java - 未收到或延迟收到 UPnP 事件