سؤال

مرحبا، أحتاج إلى لعب أغنية من مكتبة iTunes. لقد ذهبت من خلال دليل الوصول إلى مكتبة مكتبة التفاح وحصل على الكود.

MPMediaQuery *everything = [[MPMediaQuery alloc] init];
NSLog(@"Logging items from a generic query...");
NSArray *itemsFromGenericQuery = [everything items];
MPMediaItem *song;
for (song in itemsFromGenericQuery) 
{
    NSString *songTitle = [song valueForProperty: MPMediaItemPropertyTitle];
    NSLog (@"%@", songTitle);
}

//assign a playback queue containing all media items on the device
[myPlayer setQueueWithQuery:everything];//setQueueWithQuery:everything];

//start playing from the begining
[myPlayer play];

ولكن هذا سيبدأ اللعب من بداية قائمة المكتبة. أحتاج إلى تشغيل أغنية عندما أحددها من القائمة. هل من الممكن ان يساعدني احد من فضلكم...

شكرا، شيبين.

هل كانت مفيدة؟

المحلول

باستخدام MPMediaPickerController مثيل يمكنك الاختيار من بين قائمة أغنية مكتبة iPod، وقائمة الألبوم، إلخ. هنا مثال يحدد جميع الأغاني من iPod ويعرض في وحدة تحكم عرض مشروط.

- (IBAction) selectSong: (id) sender 
{   
    MPMediaPickerController *picker =
    [[MPMediaPickerController alloc] initWithMediaTypes: MPMediaTypeMusic];

    picker.delegate                     = self;
    picker.allowsPickingMultipleItems   = NO;
    picker.prompt                       = NSLocalizedString (@"Select any song from the list", @"Prompt to user to choose some songs to play");

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

الآن تحتاج إلى تطبيق المندوب لتخزين الأغنية في المتغير المحلي الخاص بك. هنا، selectedSongCollection هو مثال من MPMediaItemCollection.

- (void) mediaPicker: (MPMediaPickerController *) mediaPicker didPickMediaItems: (MPMediaItemCollection *) mediaItemCollection 
{
    [self dismissModalViewControllerAnimated: YES];
    selectedSongCollection=mediaItemCollection; 
}

بعد الانتهاء من اختيار الأغنية، قم بتنفيذ المندوب لإقالة منتقي:

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

نصائح أخرى

أنت تقوم بتعيين قائمة تشغيل لجميع الأغاني إلى مشغل الموسيقى، بحيدة بالطبع سوف تلعب القائمة بأكملها، بدءا من البداية. إذا كنت تريد أن يختار المستخدم أغنية محددة من مكتبة iPod، فاستخدم MPMediaPickerController.

لم أستطع استخدامMPMediaPickerController في سيناريو.

إجابتي القصيرة على السؤال هو إلقاء نظرة على [musicplayer setNowPlayingItem:item]

إليك بعض الكود أدناه من تطبيقي.

// Create a new query
MPMediaQuery *query = [MPMediaQuery songsQuery];
MPMediaPropertyPredicate *mpp = [MPMediaPropertyPredicate predicateWithValue:@"a" forProperty:MPMediaItemPropertyTitle comparisonType:MPMediaPredicateComparisonContains];
[query addFilterPredicate:mpp]; 

// Retrieve the results and reload the table data
DATAENV.songCollections = [NSMutableArray arrayWithArray:query.collections];

//populate cell rows with 

- (UITableViewCell *)tableView:(UITableView *)tView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    MPMediaItem *item = [[[DATAENV.songCollections objectAtIndex:indexPath.row] items] lastObject];
    titleLbl = [item valueForProperty:MPMediaItemPropertyTitle];
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    MPMediaItem *item = [[[self.songCollections objectAtIndex:indexPath.row] items] lastObject];
    [PLAYER setNowPlayingItem:item];
    [PLAYER play];
}

حيث اللاعب / dataenv هما singletons بلدي

#define PLAYER  [[AudioController sharedAudioController_instance] musicPlayer]
#define DATAENV [DataEnvironment sharedDataEnvironment_instance]
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top