【问题标题】:Android cling device added vs remotedeviceadded添加的 Android 附着设备与添加的远程设备
【发布时间】:2014-09-26 08:51:04
【问题描述】:

我正在使用 Cling 1.0.5

每次调用 remoteDeviceAdded 时,我都会填充视图。

在调试期间,我看到首先调用了deviceAdded,然后是remoteDeviceAdded

有时,remoteDeviceAdded 不会被调用,但deviceAdded 仍会被调用。

那么哪个用于发现远程媒体渲染器?

【问题讨论】:

    标签: android upnp android-cling


    【解决方案1】:

    首先,请注意以下内容与Cling 2.0.1有关,但我认为逻辑是相同的。

    在 Cling 中,LocalDevice 和 RemoteDevice 都扩展了 Device 类。 LocalDevice 和 RemoteDevice 之间的主要区别之一是 RemoteDevice 很可能是完全水合的——它的所有服务 XML 定义都被解析,UPnP 动作和状态被填充到 RemoteDevice 对象中。

    在执行 LAN 搜索设备时,Cling 不会等待发现的设备对象完全水合,而是调用 localDeviceAdded(),而后者又调用 deviceAdded()。完成后,它将调用remoteDeviceDiscoveryStarted() 并尝试对搜索中找到的设备进行完全水合。 如果设备成功补水,则 Cling 将调用 remoteDeviceAdded(),而后者又会调用 deviceAdded()。 如果设备无法完全补水,则 Cling 将改为调用 remoteDeviceDiscoveryFailed()

    只是为了让它更形象一点:

                             Start search
                                  +
                                  |
                                  | Device discovered
                                  |
                                  v
                                calls
                          LocalDeviceAdded()
                                  +
                                  |             calls
                                  | remoteDeviceDiscoveryStarted()
                                  |
                                  v
                         Attempt to hydrate
                                  +
                                  |
                                  |
           calls          Success | Failure               calls
    remoteDeviceAdded() <---------+---------> remoteDeviceDiscoveryFailed()
    

    所以现在回答你的问题,这真的取决于你想在你的应用程序中执行什么:

    • 如果只需要列出发现设备的基本信息,可以使用localDeviceAdded()获取的LocalDevice
    • 如果您需要对设备执行操作,则需要来自remoteDeviceAdded() 的 RemoteDevice。

    我个人会选择第三种选择,开始使用 LocalDevice 操作(可能将其缓存在某处,或显示它)并等待设备成为完全水合的 RemoteDevice 以读取其状态并执行操作。

    【讨论】:

    • 谢谢,它解释得很好
    猜你喜欢
    • 2017-07-29
    • 2012-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多