我使用保鮮1.0.5Andorid的保鮮裝置VS remotedeviceadded
我每次remoteDeviceAdded
被稱爲填充視圖。
調試過程中,我看到deviceAdded
首先被調用,然後remoteDeviceAdded
有時候,remoteDeviceAdded
不叫了起來,但deviceAdded
仍然會被調用。
那麼,哪些用於發現遠程媒體渲染器?
有人請幫助我,或我指向正確的方式
在此先感謝
我使用保鮮1.0.5Andorid的保鮮裝置VS remotedeviceadded
我每次remoteDeviceAdded
被稱爲填充視圖。
調試過程中,我看到deviceAdded
首先被調用,然後remoteDeviceAdded
有時候,remoteDeviceAdded
不叫了起來,但deviceAdded
仍然會被調用。
那麼,哪些用於發現遠程媒體渲染器?
有人請幫助我,或我指向正確的方式
在此先感謝
首先,請注意,以下是關於保鮮2.0.1但我認爲邏輯是相同的。
在Cling中,擴展Device類的LocalDevice和RemoteDevice之間存在區別。 LocalDevice和RemoteDevice之間的一個主要區別是RemoteDevice最有可能完全水合 - 它的所有服務XML定義都被解析,並且UPnP動作和狀態被填充到RemoteDevice對象中。
執行設備的LAN搜索時,Cling不會等待發現的Device對象完全水合並調用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()
remoteDeviceAdded()
。就我個人而言,我會去第三個選項,我開始使用LocalDevice(也許緩存它的地方,或顯示它),並等待設備成爲一個完全水合的RemoteDevice讀取其狀態並執行操作。
謝謝,它解釋偉大 – nmxprime 2015-07-13 11:04:00