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)")
コレクションは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
}
}
}