2014-01-21 2 views
5

Спасибо, что ответило на этот вопрос. Я использую одиночку, чтобы играть музыку в моем приложении, с помощью AVPlayer, как этот путь:Избегайте воспроизведения AVPlayer и UIWebView в то же время

AVAudioSession *session = [AVAudioSession sharedInstance]; 
[session setCategory:AVAudioSessionCategoryPlayback error:nil]; 
[session setActive:YES error:nil]; 

AVURLAsset *musicAsset = [[AVURLAsset alloc] initWithURL:url options:nil]; 
AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:musicAsset]; 

AVPlayer *player = [AVPlayer playerWithPlayerItem:_playerItem]; 

player.actionAtItemEnd = AVPlayerActionAtItemEndNone; 

[player play]; 

Он отлично работает. Но в моем приложении есть несколько музыкальных страниц (HTML5), поэтому пользователь может также посещать веб-страницу и воспроизводить музыку там. Музыка от UIWebView и от AVPlayer может быть воспроизведена в одно и то же время, кажется, очень странно. Есть ли способы обнаружить, будет ли UIWebView играть музыку, поэтому я могу остановить родной AVPlayer? Благодаря!

+1

Привет Держись, у вас есть решение о том, что? –

ответ

2

Вы пытались прослушивать AVPlayerItemBecameCurrentNotification? Когда ваша веб-страница запускает мультимедийный файл (видео или аудио), это будет запущено. Вы можете перехватить его следующим образом:

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(avPlayerItemBecameCurrent:) 
              name:@"AVPlayerItemBecameCurrentNotification" 
              object:nil]; 

Теперь (., И я понимаю, что я учу вас сосать яйца здесь - мои извинения Это просто для полноты), вам необходимо avPlayerItemBecameCurrent:

-(void)avPlayerItemBecameCurrent:(NSNotification*)notification 
{ 
    // Your code goes here to stop your native AVPlayer from playing. 
} 

Caveat - Я не тестировал это, но он должен работать.

(Написав это, и после того, как копаться немного больше, я нашел эту Detecting and intercepting video playback in UIWebView)

Смежные вопросы