Detectar se a música está tocando?
-
20-09-2019 - |
Pergunta
Meu aplicativo envolve música (ipodmusic) e há uma reprodução/pausa para o Uiswitch. Meu objetivo é ser capaz de detectar se a música está tocando, para que, portanto, o interruptor de peça/pausa possa dizer 'reproduzir' quando a música está tocando e 'pausa', se não for.
Solução
if ([[MPMusicPlayerController iPodMusicPlayer] playbackState] == MPMusicPlaybackStatePlaying) ...
Outras dicas
Se a música for do seu próprio aplicativo, verifique Avaudioplayer's playing
propriedade.
Se a música for do iPod, verifique MPMusicPlayerController nowPlayingItem
ou playbackState
propriedade.
O MPMusicPlayerController está disponível apenas no OS 3.0 ou superior. Se você está executando 2.0, você está sem sorte. Aqui está um trecho de código que verifica se você está executando 3,0 ou mais e só então tenta criar um 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;
}
}
}
Você deve compilar um SDK 3.0, mas se você definir o destino de implantação como 2.0, esse código ainda será executado em dispositivos mais antigos.
Vai para sim, se o seu som do iTunes está ligado, caso contrário, não for se o som estiver fora do iTunes Music Player ... para que você possa verificar o som do MusicPlayer com facilidade, você precisa adicionar a estrutura do jogador de mídia, basta experimentar vai funcionar corretamente ... thx ... :)
if ([[MPMusicPlayerController iPodMusicPlayer] playbackState] == MPMusicPlaybackStatePlaying)
{
NSLog(@"yes itune Player Sound is on");
}
else
{
NSLog(@"NO itune Player Sound is not on");
}