После завершения каждой песни я очищаю очередь и добавляю новую очередь. Однако уведомление (воспроизведение/приостановка/остановка/воспроизведение/приостановка/воспроизведение/приостановка/приостановка) вызывается несколько раз. В конечном итоге он останавливает звук в приложении и начинает воспроизведение из iTunes.Как очистить очередь MPMusicPlayerController и добавить новую очередь, когда песня закончила в соответствии с требованием
Может ли кто-нибудь помочь мне с этим?
-(void)clearqueueAndAddNewQueue
{
NSMutableArray *allTheSongs = [[NSMutableArray alloc] initWithCapacity:0];
NSLog(@"setupMusic:");
for (SongsList *obj_songsList in arrSongs) {
// NSLog(@"mediaTitle: %@",obj_songsList.mediaTitle);
MPMediaQuery *songQuery = [MPMediaQuery songsQuery];
[songQuery addFilterPredicate:[MPMediaPropertyPredicate predicateWithValue:obj_songsList.persistentId forProperty:MPMediaItemPropertyPersistentID]];
NSArray *songs = [songQuery items];
[allTheSongs addObjectsFromArray: songs];
}
//Rearrange Array in Random Objects
NSUInteger count = [allTheSongs count];
for (NSUInteger i = 0; i < count; ++i) {
// Select a random element between i and end of array to swap with.
NSInteger nElements = count - i;
NSInteger n = (arc4random() % nElements) + i;
[allTheSongs exchangeObjectAtIndex:i withObjectAtIndex:n];
}
//Modify Queue
if ([[AppDelegate appDel].musicPlayerCtrl playbackState] == MPMusicPlaybackStatePlaying) {
MPMusicPlayerController *musicplayercontroller = [MPMusicPlayerController iPodMusicPlayer];
MPMediaItemCollection *currentQueue = [[MPMediaItemCollection alloc] initWithItems:allTheSongs];
MPMediaItem *nowPlaying = [[currentQueue items] objectAtIndex:0];
[musicplayercontroller setQueueWithItemCollection:currentQueue];
[musicplayercontroller setNowPlayingItem:nowPlaying];
[AppDelegate appDel].musicPlayerCtrl = musicplayercontroller;
}
//I have also used this instead of above mentioed Modify Queue
if ([[AppDelegate appDel].musicPlayerCtrl playbackState] == MPMusicPlaybackStatePlaying) {
MPMediaPropertyPredicate *predicate =
[MPMediaPropertyPredicate predicateWithValue: @"Non_Existant_Song_Name"
forProperty: MPMediaItemPropertyTitle];
MPMediaQuery *q = [[MPMediaQuery alloc] init];
[q addFilterPredicate: predicate];
[[AppDelegate appDel].musicPlayerCtrl setQueueWithQuery:q];
[AppDelegate appDel].musicPlayerCtrl.nowPlayingItem = nil;
[[AppDelegate appDel].musicPlayerCtrl stop];
MPMediaItemCollection *currentQueue = [[MPMediaItemCollection alloc] initWithItems:allTheSongs];
[[AppDelegate appDel].musicPlayerCtrl setQueueWithItemCollection:currentQueue];
[[AppDelegate appDel].musicPlayerCtrl play];
}
}