首页 > 代码库 > cling的异步操作

cling的异步操作

 

cling 2.x API看上去只改了包名和个别类名但却已经完整支持了异步操作。下面的片段验证了一个异步过程,Android程序调用远程UPnP设备(PC Windows MediaPlayer媒体渲染器)的AVTransort服务执行一个Seek操作。手机和PC均连接家用局域网

技术分享

上图代码中refUpnpService是的UPnP协议栈,refDevAVT是远程设备的AVTransport服务,act是一个Seek。

Seek成功与否的信息返回封装在了act的回掉中,如下图的代码

技术分享

附注

1,cling为什么把Seek等一些class封装在support库里,因为Seek包含一些DLNA层面的数据解析,而cling core主要是UPnP。

2,另外为什么复杂不可预料的网络操作没有 "time out" 返回项,因为UPnP协议规范处理了网络异常,这个状况列为failure而且有详细信息。

 

在执行Seek之前有一句"before seek",执行玩Seek之后有一句"after seek",操作的结果的会有一句"seek succeeded"或"seek failed"

同步的话log信息将是:"before seek" ->(调用线程阻赛直到操作完成)"seek succeeded" 或 "seek failed" -> "after seek"

异步的话log信息将是:"before seek" ->(调用线程不阻赛直接返回)"after seek"->"seek succeeded" 或 "seek failed"

 

下面是Android程序的UI操作SeekBar(松开后执行一次Seek),通过UPnP将远程媒体渲染器Windows MediaPlayer的时间跳到02:05,远程渲染器响应了请求Seek到02:05

技术分享

技术分享

Android Studio的Log信息指明cling库已经做了异步处理,即调用Seek后直接返回,100多毫秒后服务器返回Seek成功。

技术分享

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

cling的异步操作