[英]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.