簡體   English   中英

新增了Android cling設備和remotedevice

[英]Android cling device added vs remotedeviceadded

我正在使用Cling 1.0.5

每次調用remoteDeviceAdded時,我都會填充視圖。

調試過程中,我看到deviceAdded首先被調用,然后remoteDeviceAdded

有時, remoteDeviceAdded不叫了起來,但deviceAdded仍然會被調用。

那么,用於發現遠程媒體渲染器的是哪一個?

首先,請注意以下內容與Cling 2.0.1有關,但我認為邏輯是相同的。

在Cling中,LocalDevice和RemoteDevice都擴展了Device類,這是有區別的。 LocalDevice和RemoteDevice之間的主要區別之一是RemoteDevice最有可能是完全水合的-解析其所有服務XML定義,並在RemoteDevice對象中填充UPnP操作和狀態。

在對設備執行LAN搜索時,Cling不會等待發現的Device對象完全水化, localDeviceAdded()調用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()獲得的localDeviceAdded()
  • 如果需要使用設備執行操作,則需要remoteDeviceAdded()的RemoteDevice。

就我個人而言,我會選擇第三個選項,即我開始使用LocalDevice進行操作(可能將其緩存在某個地方,或將其顯示),然后等待該設備成為完全水化的RemoteDevice來讀取其狀態並執行操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM