【问题标题】:Can I have AVQueuePlayer and AVPlayer initialised in one singleton? [closed]我可以在一个单例中初始化 AVQueuePlayer 和 AVPlayer 吗? [关闭]
【发布时间】:2020-07-10 17:55:20
【问题描述】:

问题是关于概念而不是请求代码示例/

在我的应用程序中,我想要“播放专辑”功能,我几乎实现了这个功能,但是我注意到用户可能会退出到不同的专辑视图,例如在那里播放一首曲目,然后返回上一个专辑队列。

那么我应该在同一个单例中添加单独的 AVPlayer 变量以播放单个曲目,同时保持歌曲队列不变,还是完全放弃 AVPlayer 播放音频并仅在队列上运行? 我的第一个问题是在单例中实现多个功能是个坏主意(因此得名)。这里最好的用户体验是什么?

在 Apple Music 中,似乎将每张专辑都视为播放列表,并在队列的其余部分之前插入全新专辑。

【问题讨论】:

  • 我明确表示这是关于概念而不是“代码”,我的问题不需要更集中。

标签: swift avplayer tvos user-experience


【解决方案1】:

您可以在单例中初始化两者。如果您希望 AVQueuePlayer 与现有歌曲队列保持不变,那么您可以在同一个单例中创建一个新的 AVPlayer 对象来播放单个请求。

除了上述方法,您可以使用相同的 AVQueuePlayer,并在 items 数组中使用一个新列表,如下所示

//Save current player item details
var currentItem = avQueuePlayer.currentItem
CMTime currentTime = currentItem.currentTime

//Add new single song at last of queue and play
var lastItem = avQueuePlayer.items().last
let newItem = AVPlayerItem(URL: <URL>)
self.avQueuePlayer?.insert(newItem, after: lastItem)
lastItem = newItem

当最后一首歌曲结束后,您可以从队列中恢复已保存的歌曲。

 self.avQueuePlayer.nowPlayingItem = currentItem

我只是给出一个想法。您可能需要进行更多修改。

【讨论】:

    猜你喜欢
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-17
    • 1970-01-01
    • 2018-02-20
    • 2021-07-04
    • 1970-01-01
    相关资源
    最近更新 更多