如何检索专辑列表,包括iOS / MediaPlayer上的总播放时间

时间:2017-04-08 21:54:53

标签: ios mpmediaquery

如果您使用[MPMediaQuery genresQuery],则会得到MPMediaItemCollection,但不会占用总播放时间。您可以使用representativeItem,但这只能为您提供特定的项目播放时间。

是否有一种有效的方式来显示所有专辑,包括总播放时间?

1 个答案:

答案 0 :(得分:0)

如果你需要获得整个图书馆的播放时间,那么你只需要遍历MPMediaQuery中的项目。

    let query = MPMediaQuery.albums()
    let items = query.items
    var totalTime: TimeInterval = 0.0
    if items != nil {
        for item in items! {
            totalTime += item.playbackDuration
        }
    }
    let duration = Int(totalTime)
    let seconds = duration % 60
    let minutes = duration / 60 % 60
    let hours = duration / 3600
    print("Total playback time: \(hours):\(minutes):\(seconds)")

集合将为您提供按字母顺序排序的MPMediaItems数组,并按groupingType选项(艺术家,专辑,流派等)分组。如果您需要库中每张专辑的播放时间,那么您可以像这样迭代:

    let query = MPMediaQuery.albums()
    let collections = query.collections
    var albumTime: TimeInterval = 0.0
    if collections != nil {
        for collection in collections! {
            if let albumTitle = collection.representativeItem?.value(forProperty: MPMediaItemPropertyAlbumTitle) {
                for item in collection.items {
                    albumTime += item.playbackDuration
                }
                let duration = Int(albumTime)
                let seconds = duration % 60
                let minutes = duration / 60 % 60
                let hours = duration / 3600
                print("\"\(albumTitle)\" playback time: \(hours):\(minutes):\(seconds)")
                albumTime = 0.0
            }
        }
    }