2016-06-22 4 views
8

Итак, я работал над приложением для видеозахвата, которое воспроизводит фоновый звук (из Spotify или Apple Music), и у меня небольшая проблема, когда есть небольшое прерывание звука, когда я открываю приложение во время аудио воспроизводится.Фоновый звук для iOS Video App

Вот что я за то, что фоновый звук для воспроизведения (находится в моих didFinishLaunchingWithOptions в моем AppDelegate классе:

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord 
           withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker |  AVAudioSessionCategoryOptionMixWithOthers 
             error:nil]; 
[[AVAudioSession sharedInstance] setActive:YES error:nil]; 

Любые ключи, чтобы остановить эту начинающуюся прерывание Спасибо !!

EDIT

?

Следует также упомянуть после установки AVAudioSession I Я устанавливаю свой AVCaptureSession. Я инициализирую его, затем задаю свойства.

self.session.usesApplicationAudioSession = YES; 
self.session.automaticallyConfiguresApplicationAudioSession = NO; 
+1

Вместо того чтобы пропустить в 'nil' за ошибку, почему бы не использовать' NSError' и посмотреть, будет ли возвращена ошибка? – JAL

+0

@JAL не получило ошибки –

+0

Вы заметили это прерывание только в определении? – NeverHopeless

ответ

2

Я думаю, что причиной прерывания является то, что вы обновляете категорию в каждом случае. Вы можете использовать функцию ниже, чтобы проверить и обновить категорию, только если это необходимо.

-(BOOL) checkAndUpdateCategory { 
    NSError *error; 
    AVAudioSession *session = [AVAudioSession sharedInstance]; 
    BOOL result = [session.category isEqualToString:AVAudioSessionCategoryPlayAndRecord]; 
    if(!result) { 
     result = [session setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker | AVAudioSessionCategoryOptionMixWithOthers error:&error]; 
     if(error) { 
      //Handle Error 
      NSLOG(@"Error:%@", error); 
     } 
    } 
    return result; 
} 
+0

Это не сработало :(Все еще получаю это прерывание –

+0

Хм, знаете ли вы, что такое значение 'session.category', когда вы открываете приложение? –

+0

Он остается как AVAudioSessionCategoryPlayAndRecord –

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