2

我现在正在播放从 iPod 库加载到 myArray 中的歌曲iPodMusicPlayer

我们可以用来indexOfNowPlayingItem从 NowPlaying 音乐中获取索引。

但是当 iShuffle Mode是时on,该indexOfNowPlayingItem属性的返回索引是完全错误的。

之前ShuffleMode是关闭的,indexOfNowPlayingItem可以使用并正确。

然而当ShuffleMode打开时,indexOfNowPlayingItem 计数仅增加 1 (++)。

像那样

indexOfNowPlayingItem++;

不是正确的ShuffleMode

那么当 ShuffleMode 开启时我怎样才能得到正确的索引呢?

谢谢你的帮助。

4

1 回答 1

2

我的解决方案是当您设置播放列表时,还设置一个带有 (index, MPMediaEntityPropertyPersistentID) 播放列表的 NSMutableDictionary。

当您需要歌曲索引时,只需获取歌曲持久 id。

- (void) setPlaylistIndexDictionary:(MPMediaItemCollection *)playlistItems
{
    playlistIndexDict = [[NSMutableDictionary alloc] init];
    NSNumber *count = [[NSNumber alloc] initWithInt:0];
    for (MPMediaItem *item in [playlistItems items]) {
        [playlistIndexDict setObject:count forKey:[item valueForProperty:MPMediaEntityPropertyPersistentID]];
        count = [NSNumber numberWithInt:count.intValue + 1];
    }
}


- (NSString *) getCurrentSongId
{
    NSString* songId = [[musicPlayer nowPlayingItem] valueForProperty:MPMediaEntityPropertyPersistentID];

    return songId;
}

使用:

NSString *songId = [musicController getCurrentSongId];
int songIndex = [[[musicController playlistIndexDict] objectForKey:songId] intValue];
于 2013-04-29T19:29:38.380 回答