我想知道某段时间内歌曲的收听时间。使用MPMediaItemPropertyLastPlayedDate,我只能得到歌曲最后一次播放的日期,所以如果我一天播放一首歌多次,那么只有最后一次会被计算在内。基本上,我想要做的是获取用户在一段时间内(例如最近两天)的收听历史。另外,对于MPMediaItemPropertyPlayCount,我得到了总的播放次数。
有什么想法吗?
谢谢。
发布于 2015-05-24 09:06:13
我现在正在做这件事。我的(Swift代码)是:
func getPlaysSince(since:NSDate, onSuccess: (tracks: [MediaItem])->(), onFail: (error: NSError?)->()) {
var rValue = [MediaItem]()
let timeInterval = since.timeIntervalSince1970
let query = MPMediaQuery.songsQuery()
let songs = query.items
Logger.logMessage(domain: "Data", level: .Minor, "Checking \(songs.count) songs for those since \(since)")
let then = NSDate()
for song in songs {
if let lastPlayedDate = song.lastPlayedDate {
if lastPlayedDate != nil {
if lastPlayedDate.timeIntervalSince1970 > timeInterval {
Logger.logMessage(domain: "Data", level: .Minor, "\(song.title) at \(lastPlayedDate)")
let item:MediaItem = MediaItem(mediaItem: song as! MPMediaItem)
rValue.append(item)
}
}
}
}
let taken = NSDate().timeIntervalSinceDate(then)
Logger.logMessage(domain: "Data", level: .Minor, "scanned in \(taken) seconds")
onSuccess(tracks: rValue)
}我已经包含了我的整个函数,尽管关键行是查询、歌曲和歌曲的赋值,然后是对lastPlayedDate的检查。lastPlayedDate可以为空(以前从未播放过这首歌)。
这段代码对我的整个5K曲库做了一个完整的检查,大约需要3秒。在我的例子中,我只对我的游戏历史感兴趣,因为“自”
发布于 2014-05-01 08:39:03
使用此选项可获取MPMediaItem的持续时间。
MPMediaItem *song;
NSNumber *duration= [song valueForProperty:MPMediaItemPropertyPlaybackDuration];https://stackoverflow.com/questions/23398553
复制相似问题