2016-12-14 74 views
0

我正在嘗試使用Google Cast SDK編寫一個小應用程序。 這個應用程序應該能夠顯示我的音頻系統正在播放哪些(Google Cast)歌曲。 這應該包括關於曲目的標題信息,長度,藝術家,專輯等Google Cast:從音頻設備獲取當前播放歌曲

使用我成功了iOS類通過GCKDiscoveryManager連接到正確的GCKDevice。但是,我如何獲得有關當前正在播放的曲目的數據?

我更喜歡iOS類的答案,但我也非常感謝任何提示,以達到與Chromecast瀏覽器擴展相同的效果。

附加組件:

在我指出來this link的演員開發商+ - 組,感謝萊昂!我看到我應該註冊一個GCKRemoteMediaClientListener,如果我有GCKRemoteMediaClient對象,我可以這樣做。唯一的方法就是通過GCKSession。我可以從頭開始創建這樣一個會話,但之後屬性remoteMediaClientnil。或者我可以要求GCKCastContext.sharedInstance().sessionManager爲我開始一個會話。但如果我這樣做,設備會立即停止播放。 所以我仍然有點失落如何實現我的最初目標。

請幫忙嗎?

回答

1

經過Cast開發人員組的Leon的更多幫助後,我想到了這一點。關鍵信息是在我的音頻設備上運行的應用程序的ID。我想到了這個棄用的2.0 API,這就是爲什麼我不會添加這個細節。 所以假設你有鑰匙,你可以通過

let options = GCKCastOptions.init(receiverApplicationID: applicationID) 
GCKCastContext.setSharedInstanceWith(options) 

接下來的事情初始化yiur投方面是要找到您的設備。這不是很難(我自己找出的唯一的丁字褲:o),GCKCastContext.sharedInstance().discoveryManager是你的朋友。 如果你現在通過GCKCastContext.sharedInstance().sessionManager開始一個會話,它將而不是停止播放。在事後看來,完全符合邏輯,讓我想知道我之前開始使用隨機應用程序ID的那個應用程序...

隨着會話開始,您可以將該會話轉換爲演員會話並添加會話監聽器。

if let session = sessionManager.currentSession as? GCKCastSession { 
    session.add(self) 
} 

而當該屆會議通知其活性在

func castSession(_ castSession: GCKCastSession, didReceive activeInputStatus: GCKActiveInputStatus) 

你現在可以找到久違的remoteMediaClient並註冊爲他的珍貴事件

if let client = castSession.remoteMediaClient { 
    client.add(self) 
} 

指出,這將結束長途旅行通過撥打您的代理方法

func remoteMediaClient(_ client: GCKRemoteMediaClient, didUpdate mediaMetadata: GCKMediaMetadata) 

如果你像我一樣幸運,那麼媒體數據是相當不完整的。 礦只包含標題和發佈日期,沒有別的。 謝謝Deezer!

但也許我可以使用一些id或其他在整個過程中獲得的數據從Deezer服務器獲取丟失的數據?時間會證明。

在此期間,我希望這可以幫助有更多運氣的人。

相關問題