Как определить, играет ли музыка?

Мое приложение включает музыку (iPodMusic), и есть переключатель воспроизведения / паузы UISwitch. Моя цель - иметь возможность определять, играет ли музыка, чтобы переключатель воспроизведения / паузы мог сказать «играть», когда музыка играет, и «пауза», если это не так.


person Flafla2    schedule 16.02.2010    source источник


Ответы (4)


Если музыка из вашего собственного приложения, отметьте свойство playing AVAudioPlayer.

Если музыка с iPod, установите флажок свойство nowPlayingItem или playbackState MPMusicPlayerController.

person kennytm    schedule 16.02.2010

MPMusicPlayerController доступен только в OS 3.0 или выше. Если вы используете 2.0, вам не повезло. Вот фрагмент кода, который проверяет, используете ли вы версию 3.0 или выше, и только после этого пытается создать MPMuiscPlayerController.

bool playerDetectedAndPlaying = false;
NSString *reqSysVer = @"3.0";
NSString *currSysVer = [[UIDevice currentDevice] systemVersion];
if ([currSysVer compare:reqSysVer options:NSNumericSearch] != NSOrderedAscending){
    Class MusicPlayerController = NSClassFromString(@"MPMusicPlayerController");
    if (MusicPlayerController){         
        id myMusicPlayerController = [[MusicPlayerController alloc]init];
        id MusicPlayer = [[myMusicPlayerController class] iPodMusicPlayer ];
        if ( [ MusicPlayer playbackState ] == MPMusicPlaybackStatePlaying ) {
            playerDetectedAndPlaying = true;
        }
    }
}

Вы должны скомпилировать SDK 3.0, но если вы установите цель развертывания на 2.0, этот код по-прежнему будет работать на старых устройствах.

person Curmudgeonlybumbly    schedule 21.03.2010

он переходит в "да", если звук в iTunes включен, в противном случае - в "нет", если звук в музыкальном проигрывателе iTunes отключен ... Таким образом, вы можете легко проверить, включен или выключен звук MusicPlayer по умолчанию. Вам необходимо добавить платформу мультимедийного проигрывателя. Просто попробуйте. Правильно будет работать .... Спасибо ... :)

   if ([[MPMusicPlayerController iPodMusicPlayer] playbackState] == MPMusicPlaybackStatePlaying)
    {
           NSLog(@"yes itune Player Sound is on");
    }
    else
    {
          NSLog(@"NO itune Player Sound is not on");
    }
person Kaushik Movaliya    schedule 16.06.2016

person    schedule
comment
Это также полезно, если вы хотите, чтобы ваше приложение перестало издавать собственный шум, если пользователь запускает приложение iPod. Например, если вы пишете игру, и ваша собственная внутриигровая музыка конфликтует с пользователем, пытающимся сыграть свою собственную. - person Piku; 21.08.2011
comment
Это должно быть исправлено из-за устаревания в iOS 8.0 iPodMusicPlayer метода MPMusicController: замените его на systemMusicPlayer. - person DDPWNAGE; 16.06.2015