从iPod库播放歌曲,只有它的标题

时间:2011-11-10 14:43:12

标签: iphone objective-c ios media-player

我需要使用歌曲的名称开始在另一个iOS应用中播放一首歌(在iPod库中)。

我研究了一些MediaPlayer框架,但没有找到任何有用的东西。 我知道这可以做到,就像App Store中的一些应用程序那样,例如SoundHound,它可以播放你在iPod库中发现的某首歌。

2 个答案:

答案 0 :(得分:1)

试试这个: http://mobile.tutsplus.com/tutorials/iphone/ios-sdk-music-library-access/

编辑:

你可以试试这首歌:

#pragma mark - Media Picker

- (IBAction)showMediaPicker:(id)sender
{
    MPMediaPickerController *mediaPicker = [[MPMediaPickerController alloc] initWithMediaTypes: MPMediaTypeAny];

    mediaPicker.delegate = self;
    mediaPicker.allowsPickingMultipleItems = YES;
    mediaPicker.prompt = @"Select songs to play";

    [self presentModalViewController:mediaPicker animated:YES];
    [mediaPicker release];
}

- (void) mediaPicker: (MPMediaPickerController *) mediaPicker didPickMediaItems: (MPMediaItemCollection *) mediaItemCollection
{
    if (mediaItemCollection) {

        [musicPlayer setQueueWithItemCollection: mediaItemCollection];
        [musicPlayer play];
    }

    [self dismissModalViewControllerAnimated: YES];
}


- (void) mediaPickerDidCancel: (MPMediaPickerController *) mediaPicker 
{
    [self dismissModalViewControllerAnimated: YES];
}

答案 1 :(得分:0)

如果您想播放具有特定标题的歌曲,而无需用户使用媒体选择器手动选择歌曲,您可能需要使用歌曲标题尝试媒体播放器查询。

MPMediaPropertyPredicate *titlePredicate =
[MPMediaPropertyPredicate predicateWithValue:searchText
                             forProperty:MPMediaItemPropertyTitle
                             comparisonType:MPMediaPredicateComparisonContains];

NSSet *predicates = [NSSet setWithObjects: titlePredicate, nil];

MPMediaQuery *songsQuery =  [[MPMediaQuery alloc] initWithFilterPredicates: predicates];

NSLog(@"%@", [songsQuery items]);

MPMediaQuery search for Artists, Albums, and Songs

上有很好的代码示例和有关查询的更多讨论