iPhone AVAudioRecorder проблема с паузой после ввода фона - PullRequest
2 голосов
/ 07 июля 2011

У меня проблема с приостановкой AVAudioRecorder после ввода фона.По сути, это выглядит так (_recorder - это мой экземпляр AVAudioRecorder):

  1. Начало записи:

    [_recorder record];
    
  2. Нажмите кнопку «Домой» наdevice.

  3. Поскольку я установил наблюдателя для уведомления об этом случае (в viewDidLoad), мой пользовательский метод applicationDidEnterBackground срабатывает.
  4. В applicationDidEnterBackground я делаю:

    [_recorder pause];
    
  5. Теперь, когда я нажимаю на значок приложения, выведите приложение на передний план, немедленно непрерывно записывая, не предпринимая никаких действий.Это даже странно, потому что проверка свойства:

    _recorder.recording == YES
    

возвращает NO.

У меня есть функция, которая вызывается NSTimer каждые 0,1 с (для обновления пользовательского интерфейса и т. Д..), и в этой функции у меня есть это:

if(_recorder.recording) {
    NSLog(@"recording");
}
else {
    NSLog(@"not recording");
    NSLog(@"time: %f", _recorder.currentTime);
} 

Он печатает на консоли:

    ...
    not recording
    time: 9.404082
    not recording
    not recording
    time: 9.473197
    not recording
    time: 9.531179
    not recording
    time: 9.629206
    not recording
    time: 9.728435
    ...

Итак, как вы можете видеть, currentTime рекордера увеличивается все время,и звук записывается.

Есть идеи, как решить эту проблему?

1 Ответ

7 голосов
/ 11 июля 2011

Вы должны добавить следующий код:

<key>UIBackgroundModes</key>
<array>
    <string>audio</string>
</array>

в Info.plist. Это приведет к тому, что фоновый режим будет реагировать на управление аудио сеансом, поэтому вы можете вручную приостановить и возобновить запись.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...