Как сохранить текущее состояние MPMediaItem и реагировать на изменение значения при вводе переднего плана - PullRequest
0 голосов
/ 20 июня 2011

Поэтому я пытаюсь разработать музыкальную игру, которая использует музыкальную библиотеку iPod.Пользователь выбирает песню на основе подсказки.Поскольку я использую [MPMusicPlayerController iPodMusicPlayer], возможно, пользователь изменил песню в приложении iPod, прежде чем вернуться в приложение.Если это так, я хочу, чтобы он позвонил [musicPlayer stop].К сожалению, я не могу понять, как сохранить текущую песню и сравнить ее с текущей песней, когда приложение возвращается из фона.Проверьте код ниже.

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    MPMusicPlayerController *musicPlayer = [MPMusicPlayerController iPodMusicPlayer];
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    NSString *persistantID = [musicPlayer.nowPlayingItem valueForProperty:MPMediaItemPropertyPersistentID];
    [prefs setValue:persistantID forKey:@"NOWPLAYING_ID"];

}

И

- (void)applicationWillEnterForeground:(UIApplication *)application
{
    MPMusicPlayerController *musicPlayer = [MPMusicPlayerController iPodMusicPlayer];
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    NSString *persistantID = [prefs stringForKey:@"NOWPLAYING_ID"];
    if (persistantID == [musicPlayer.nowPlayingItem valueForProperty:MPMediaItemPropertyPersistentID]) {
    }
    else {
        [musicPlayer stop];
    }
    [prefs setValue:nil forKey:@"NOWPLAYING_ID"];

}

Кто-нибудь может мне помочь?Большое спасибо.

1 Ответ

1 голос
/ 21 июня 2011
- (void)applicationWillResignActive:(UIApplication *)application    {
    self.mediaItemSavedWhenAppSuspended = [musicPlayer nowPlayingItem];
}

- (void)applicationDidBecomeActive:(UIApplication *)application {
    MPMediaItem *nowPlayingItem = [musicPlayer nowPlayingItem];
    NSNumber *playingItem = [nowPlayingItem valueForProperty:MPMediaItemPropertyPersistentID];
    NSNumber *previousItem = [self.mediaItemSavedWhenAppSuspended valueForProperty:MPMediaItemPropertyPersistentID];

    if( [playingItem compare:previousItem] == NSOrderedSame )   {   //  same track still playing
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...