cling-java,android的协议栈

译文地址:https://github.com/4thline/cling

Cling 类库是由 Java 实现的 DLNA/UPnP 协议栈。这个项目的目的不但严格规范遵守,完整清晰大量的api,而且有丰富的spis用于轻松的定制化。


Cling是一个开源库,分布在GNU Lesser General Public License或者Common Development and Distribution License。

我们建议你从readme.txt开始。


之后下载Cling或创建一个maven工程在你的pom.xml

<repositories>
    <repository>
        <id>4thline-repo</id>
        <url>http://4thline.org/m2</url>
        <snapshots>
            <enabled>false</enabled> <!-- Or true, if you like to use unreleased code -->
        </snapshots>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>org.fourthline.cling</groupId>
        <artifactId>cling-core</artifactId>
        <version>2.1.1</version>
    </dependency>
</dependencies>

读简单的Cling使用例子手册的第一章,看这个android应用的例子。

请把你使用Cling遇到的问题取个合适的tags提交到stackoverflow.com。

扫描二维码关注公众号,回复: 9056100 查看本文章


Cling的主moudle是

Cling Core

是一个实现了 UPnP Device Architecture 1.0的嵌入式java库, 使用Cling Core和一个upnp远程接口来显示services,也可以写个control point的发现upnp驱动和使用它的service的应用。你也可以继承Cling Core 作为一个 Android UPnP/DLNA library  在你的项目中(platform level 15/4.0 required).

Cling Support

对于开发和控制UPnP services,Cling Core是可选和有帮助的。简单的使用UPnP media服务和渲染器,在路由器上绘制NAT端口 等等。


Cling Workbench

一个浏览upnp设备和与它的服务交互的桌面应用


Cling MediaRenderer

基于gstreamer ,单机的 UPnP MediaRenderer


Building Cling

下载 Maven 3.2.3或更新

安装android sdk 并为 sdk目录配置ANDROID_HOME环境变量

clone Cling源码 

git clone https://github.com/4thline/cling.git

改变cling/目录

安装所有的东西到你的本地~/.m2  maven仓库(如果所有的依赖都需要第一时间下载,可能需要几分钟的时间)

mvn clean install
如果因为你的Android/dex包出错导致编译失败,因为你忘记了clean

使用Cling 在你的pom.xml :

<dependencies>
  <dependency>
    <groupId>org.fourthline.cling</groupId>
    <artifactId>cling-core</artifactId>
    <version>2.1.2-SNAPSHOT</version>
  </dependency>
</dependencies>

Building OS X Workbench DMG

hdiutil create -srcfolder \
    workbench/target/cling-workbench-2.1.2-SNAPSHOT/Cling\ Workbench.app \
    workbench/target/cling-workbench-2.1.2-SNAPSHOT/Cling\ Workbench.dmg

Publishing a release

在github上构建一个 release 和 tag

更新maven仓库:

mvn clean install
mvn deploy

Projects and applications using Cling

如果你的项目或产品正在使用Cling,你需要在这个页面添加它,打开issue 我们将会将你加到列表里。

YAACC-一个Android的UPnP控制器,自由软件为GPL。它允许您在您的网络中发现、使用和控制UPnP设备,以便流媒体文件。由于它是UPnP的一个子集,它也可以与DLNA设备进行通信 。

等等...... (这我就不翻译了)


Noteworthy forks of Cling

jUPnP--  pre-2.0分出来的, 这个代码仍然基于包含OSGi的已经从Cling 2.0移除的特征

DIAL Support -- 基于alpha 2.0 的代码,这个android,java的UPnP/DLNA库,包含了发现DIAL设备的修改


FAQ

Cling实现了哪个版本的upnp规范?

Cling Core兼容了UPnP Device Architecture 1.0。


在android设备上,我能使用Cling来连接一个UPnP/DLNA 媒体服务器吗?

是的, 你能够使用Cling Core库为android写一个control point应用。你能够在Cling Support模块儿中发现浏览和解析媒体服务器内容目录的附加的实用工具 。


我能够使用Cling在我的商业应用或设备中吗?

cling是被LGPL所许可的,所以它对使用未修改的Cling JAR files/binaries并不限制。 你可以在任何用途的任何应用和设备中式用未修改的Cling JAR files/binariesThe following distribution (for free or for pay) 限制应用:

  • 如果你为你的应用或设备分配了Cling,你必须包含一个公告“contains LGPL software”和一个Cling主页的链接,所以你的使用者也会从这个开源库中得到益处。
  • 你必须替换Cling 库在你的分布式应用中。意思是允许替换Cling JAR 或者JVM binary Class 文件,例如WAR 或 EAR。
  • For Cling 1.x   接下来的这个 一个可执行的静态连接的异常(see LGPLv3 clause 4 or LGPLv2 clause 6b) 适用于Cling 使用在android应用中。DEX替换了JVM 二进制格式: 将JVM 二进制 改成 DEX格式。分配一个联合工作作为一个android apk,不影响在DEX或APK档案里的其他源码的许可。无论如何你必须允许DEX或APK文件重新打包或转换,使用像dex2jar的工具。任何一个人接受你的apk使用一个兼容的版本,都必须能够替换Cling二进制代码。//TODO 未翻译的
  • For Cling 2.x   你可以在你的Cling选项许可下 CDDL替换LGPL。你可以在一个apk中转换成DEX和包2。x 而不影响这个apk。 你可以对apk做混淆,并且用digital restrictions锁定它。 如果你修改了Cling源码,从这个被编译修改了的源码当中分配二进制。你也不得不在LGPL or CDDL (upon request)下转变你分配后的源码。Typically this means you contribute your changes back to the Cling project, to be included in an official Cling release


什么是Cling Core的依赖?

Cling Core是作为单一的jar被分配,它仅仅只有一个其他的依赖,就是seamless-*库All JAR files are typically packaged next to each other in the ZIP distribution. You have to add them to your classpath.


我如何链接设备的服务?

首先写一个control point和一个RegistryListener,在手册中做了一个说明。 之后在设备被发现的时候调用device.getServices()


如果我在Tomcat/JBoss/Glassfish/etc?上开启了我的应用,但Cling没有工作?

你将会在启动的时候得到一个error,这个error将告诉你Cling 不能够使用JDK的 HttpUrlConnation 对HTTP 客户端的操作。这是JDK的一个非常老的和不好的设计:仅仅只有一个应用能够在JVM里安装它。 你不得不在HTTP客户端和Cling中做出选择,the other bundled implementation based on Apache HTTP Core。这个在the user manual中也有说明,更多详情请看the user manual。


是否支持IPv6?

不支持,在Cling Core 中 UPnP协议栈的默认配置将会过滤掉所有的网络接口和所有非IPv4的地址。一些其他Cling Core库的一部分可能支持IPv4地址,但是整个库还没有使用IPv6进行测试only environment(不会翻译),非常欢迎你使用UpnpServiceConfiguration 和 NetworkAddressFactory  来测试Cling的IPv6,贡献你的一点力量。


在android上我没有看到debug和log?

java.util.logging实现在android上已经碎了,它不允许你轻易的输出debug-level的信息。看这个解决办法this discussion


在哪里可以找到Cling 1.x and teleal-common?

Here.


Cling支持哪些Android (API)?

Cling 1.0支持Android 2.1。 Cling 2.0 我们现在需要level 15 (Android 4.0.3)。



我get到了一个lock acquisition timeout exception?

你的服务接收了一个订阅,之后这个发生了 RuntimeException at org.teleal.cling.protocol.sync.ReceivingSubscribe.responseSent(ReceivingSubscribe.java:177)。
你的服务已经被其他某些索使用了,不要放弃锁持续500毫秒的等待时间。通过在LocalService中重写DefaultServiceManager来增加等待时间。或不要阻塞这个服务action/methods很长时间。

























发布了30 篇原创文章 · 获赞 11 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/q844258542/article/details/77061941