我正在尝试使用Google Cast SDK编写一个小应用程序。 这个应用程序应该能够显示我的音频系统当前正在播放的歌曲(Google已下载)。 这应包括有关曲目标题,长度,艺术家,专辑等的信息。
使用iOS类,我已设法通过GCKDevice
连接到正确的GCKDiscoveryManager
。但是如何获取当前播放的曲目数据?
我更喜欢iOS课程的答案,但我也非常感谢任何使用Chromecast浏览器扩展程序实现相同目标的提示。
附加组件:
在Cast Developers + -Group上我被指向this link,感谢Leon!我知道如果我有一个GCKRemoteMediaClientListener
对象,我应该注册一个GCKRemoteMediaClient
。获得它的唯一方法似乎是通过GCKSession
。我可以从头创建这样的会话,但属性remoteMediaClient
是nil
。或者我可以要求GCKCastContext.sharedInstance().sessionManager
为我开始一个会话。但如果我这样做,设备会立即停止播放。
所以我仍然对如何实现我的初步目标感到有些失落。
请帮忙吗?
答案 0 :(得分:1)
在Cast开发者小组的Leon的一些帮助之后,我已经想出了这个。关键信息是我的音频设备上运行的应用程序的ID。我想通过弃用的2.0 API,这就是为什么我不会添加这个细节。 因此,假设您拥有该密钥,您可以通过
初始化yiur强制转换上下文let options = GCKCastOptions.init(receiverApplicationID: applicationID)
GCKCastContext.setSharedInstanceWith(options)
接下来就是找到你的设备。这不是太难(我自己想到的唯一的丁字裤: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服务器获取丢失的数据?时间会证明。
与此同时,我希望这能帮助更多运气的人。