2016-12-14 125 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服务器获取丢失的数据?时间会证明。

在此期间,我希望这可以帮助有更多运气的人。

相关问题