如何通过 CarPlay 音频应用程序中的实时 URL 集成音频
Posted
技术标签:
【中文标题】如何通过 CarPlay 音频应用程序中的实时 URL 集成音频【英文标题】:How do i integrate audio through live URL in CarPlay Audio App 【发布时间】:2021-08-03 09:53:22 【问题描述】:我想将音频集成到 carplay 应用程序。 我已经用 CPListItems 创建了一个 CPListTemplate,点击它,我正在推送一个正在播放的模板。 音频似乎没有播放,我无法与正在播放的屏幕互动。
问题:
-
如何将音频 URl 传递给正在播放的模板,以便它至少可以播放声音?
如何与播放器交互并在屏幕上显示专辑插图和文字?
注意:我正在模拟器上对此进行测试,并且我有 mp3 格式的音频 URL。
var listItems: [CPListItem] = []
for playListItem in PlayListItems
let item = CPListItem(text: playListItem.title, detailText: "")
item.handler = listItem, completion in
let nowPlayingTemplate = CPNowPlayingTemplate.shared
nowPlayingTemplate.add(self)
nowPlayingTemplate.isAlbumArtistButtonEnabled = true
self.interfaceController?.pushTemplate(nowPlayingTemplate, animated: true)
listItems.append(item)
let sectionPlayList = CPListSection(items: listItems)
self.interfaceController?.pushTemplate(CPListTemplate(title: “Tab 1”, sections: [sectionPlayList]), animated: true)
【问题讨论】:
嗨Shashant,你能发布一些你尝试过的代码吗?您的应用是否会在 CarPlay 之外的设备上播放音频并显示图片? 嗨,我已经添加了部分实现。 PlaylistItem 对象具有 mp3 格式的音频文件和一些其他详细信息,例如标题和专辑图像。我不确定我们是否必须将音频 url 传递给 nowplaying 对象才能开始播放声音。 Truptika 的回答应该有效。请注意,CarPlay 音频模板仅负责您应用的 UI 元素。您需要使用 AVPlayer 或其他音频库来处理播放。 是的,肖恩,这行得通。谢谢! 【参考方案1】:-
如何将音频 URl 传递给正在播放的模板,以便它至少可以播放声音?
没有办法在正在播放的模板中传递 url。使用 AVPlayer 播放音频 url。在项目处理程序上添加 setPlayer() 方法并传递您的音频 url 代替“stationUrl”。
var player = AVPlayer()
func setPlayer()
let playerItem = AVPlayerItem(url: URL(string: stationUrl)!)
player = AVPlayer(playerItem: playerItem)
player.rate = 1.0
player.play()
self.setPlayerNowPlayingInformation()
-
如何与播放器交互并在屏幕上显示专辑插图和文字?
在 MPNowPlayingInfoCenter 中的正在播放模板集媒体信息中显示专辑封面图像和文本。
func setPlayerNowPlayingInformation()
var nowPlayingInfo: [String: Any] = [:]
nowPlayingInfo = [MPMediaItemPropertyTitle: "Media Title"]
if let image = UIImage (named: "carplay_app_icon")
nowPlayingInfo[MPMediaItemPropertyArtwork] = MPMediaItemArtwork(boundsSize: image.size, requestHandler: size -> UIImage in
return image
)
MPNowPlayingInfoCenter.default().nowPlayingInfo = nowPlayingInfo
【讨论】:
感谢@truptika,这有帮助。我能够播放声音,而且专辑插图也设置在 carplay 屏幕上。虽然模拟器上的行为有点奇怪,但第一次屏幕不是交互式的,但第二次会在下一次之后被激活。 @Shashant - CarPlay 模拟器可靠性不高,存在此类问题。但是,当您说非交互式并被激活时,您指的是哪些控件或 UI 元素? 第一次推送到正在播放的模板时,音频开始在后台播放,模板是非交互式的,当我返回列表并再次推送模板时,正在播放模板变得互动,我可以播放/暂停音频。以上是关于如何通过 CarPlay 音频应用程序中的实时 URL 集成音频的主要内容,如果未能解决你的问题,请参考以下文章
使用 CarPlay 框架的 CarPlay 应用在 iOS 13 或更早版本上崩溃