0
如果您使用[MPMediaQuery genresQuery]
,则会得到MPMediaItemCollection
,它不包含总播放时间。你可以使用representativeItem
,但这个只给你特定的项目播放时间。如何检索专辑列表,包括iOS/MediaPlayer上的总播放时间
如何显示包括总播放时间在内的所有专辑是否有效?
如果您使用[MPMediaQuery genresQuery]
,则会得到MPMediaItemCollection
,它不包含总播放时间。你可以使用representativeItem
,但这个只给你特定的项目播放时间。如何检索专辑列表,包括iOS/MediaPlayer上的总播放时间
如何显示包括总播放时间在内的所有专辑是否有效?
如果您需要获取整个库的播放时间,那么您只需要遍历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)")
集合会给你按字母顺序排序,并通过groupingType
选项(艺术家,专辑,流派等)的集合分组的MPMediaItems
的阵列。如果您需要例如库中每个专辑的播放时间,那么您可以像这样迭代:
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
}
}
}