2016-09-30 45 views
2

我運行了兩個應用程序,它們都使用Cast SDK v2和Remote Display API。我開始從App#1投射,然後轉到App#2,按下投射按鈕並選擇路線。如何在其他應用程序開始投射時停止投射?

預計:應用#2開始投射,應用#1停止投射。

實際:在我選擇路線後,立即調用App#2的MediaRouter.Callback.onRouteUnselected()。應用程序的內容都不會顯示在接收器上,但App#1的通知控制器仍然存在。

我在Cast SDK v3中沒有看到這種行爲。在Cast SDK v2中有任何方法可以確保在另一個應用程序開始投射時,先前的投射會話會停止嗎?

回答

2

我還沒有這樣做,但您可以嘗試實施addUpdateListener並在另一個啓動時執行session.stop

addUpdateListener(listener) 

再添當會話改變時調用的監聽器。將 更改爲以下屬性將觸發偵聽器:statusText, 名稱空間,狀態和接收器的音量。

聽衆應檢查會話的狀態屬性以確定其連接狀態爲 。布爾型參數isAlive在 中棄用,狀態爲Session屬性。的IsAlive參數仍然 向後兼容傳遞,而且是真正的,除非

status = chrome.cast.SessionStatus.STOPPED 

停止應用程序的方法:

function stopApp() { 
    session.stop(onSuccess, onError); 
} 
+0

這樣的回答讓我在正確的道路上:現在我添加一個監聽器它重寫'Cast.Listener.onApplicationMetadataChanged()'來確定一個新的應用程序是否已經開始投射,這似乎工作。這需要在同一個'GoogleApiClient'上添加'CastRemoteDisplay.API'和'Cast.API';我詢問了一個[單獨的問題](http://stackoverflow.com/questions/39836864/can-one-use-castremotedisplay-api-and-cast-api-on-the-same-googleapiclient)以查看它是否是可以同時使用這兩種API。 –