4

我正在尝试MPMedaiItemMPMusicPlayerControlleriOS 中玩。就我而言,我有一个UITableView显示播放列表中的歌曲。当我点击手机时UITableView,我想播放那首歌MPMusicPlayerController。当我点击下一个按钮时,我还想跳过播放列表中的下一首歌曲。我怎么玩?

didSelected这是我用Method of编写的一些代码UITableView。那什么都玩不了。

    MPMediaItemCollection *songs = [self.arrayOfSongs objectAtIndex:indexPath.row ];

    MPMediaItem *item = [songs representativeItem ];

    NSLog(@"%@",[item valueForProperty:MPMediaItemPropertyTitle ]);

    [self.player setNowPlayingItem:[item valueForProperty:MPMediaItemPropertyAssetURL]];

    [self.player play ];
4

2 回答 2

9

我知道这有点晚了,但是您的问题是MPMusicPlayerController'nowPlayingItem属性需要一个MPMediaItem对象,并且您正在传递一个NSString包含资产 URL 的对象。这是一个如何实现的示例。

MPMusicPlayerController *controller = [MPMusicPlayerController iPodMusicPlayer];

MPMediaItemCollection *collection = [[MPMediaItemCollection alloc] initWithItems:arrayOfMediaItems];
MPMediaItem *item = [collection representativeItem];

[controller setQueueWithItemCollection:collection];
[controller setNowPlayingItem:item];

[controller prepareToPlay];
[controller play];
于 2013-12-19T05:29:11.623 回答
3

我发现在这样的实例中使用 AVPlayer 更容易。

在你的头文件中声明 AVPlayer 对象;

AVPlayer *audioPlayer;

然后在你的方法文件中使用类似的东西:

if(!audioPlayer){
   audioPlayer = [[AVPlayer alloc] initWithURL:[item valueForProperty:MPMediaItemPropertyAssetURL]];
} else {
   [audioPlayer replaceCurrentItemWithPlayerItem:[AVPlayerItem playerItemWithURL:itemURL]];
}
[audioPlayer play];
于 2013-01-25T18:15:32.740 回答