Подтвердить что ты не робот

AVAudioRecorder & AVAudioPlayer с iOS 7 не работает должным образом

У меня проблема с системой AVFoundation. Я написал демо-приложение для записи звука, воспроизведения и вычисления децибел с помощью iOS 6. Он работал с iOS-симулятором встроенного xcode 4.6.3 и моего iPhone с iOS 6.1.3

Теперь я обновил xcode до версии 5 и снова тестировал приложение. С помощью встроенного симулятора он работает (как с iOS 6.1, так и с iOS 7-симуляторами). Но когда я развертываю приложение на своем iPhone, с iOS 7.0, он больше не работает.

Я использую AVAudioRecorder и AVAudioPlayer.

Я не знаю, в чем проблема. Какие-либо предложения? спасибо!

4b9b3361

Ответ 1

У меня была одна и та же проблема... Кажется, Apple теперь требует использования AVAudioSession до использования AVAudioRecorder. Я не мог найти документацию об этом изменении требования, однако теперь записывается часть моего приложения.

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

Надеюсь, это исправит вашу проблему!

AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
[audioSession setActive:YES error:nil];

Ответ 2

Такая же проблема.

Я исправил его с помощью AVAudioSession. Кроме того, правильно установите категорию AVAudioSession:

при записи используйте:

[self.audioSession setCategory:AVAudioSessionCategoryRecord error:nil];

при использовании:

[self.audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];

Если я не переключаю категорию при игре, регистрация очень низкая.

Удачи!

Ответ 3

Я также сталкиваюсь с этой проблемой, поэтому Сначала мне нужно было убедиться, что у приложения есть разрешение на использование микрофона, выбрав настройки → privacy → microphone то я добился успеха.

Ответ 4

Возможно, у вас нет доступа к микрофону. Используйте этот код:

if ([audioSession respondsToSelector:@selector(requestRecordPermission:)]) {
    [audioSession performSelector:@selector(requestRecordPermission:) withObject:^(BOOL granted) {
        if (granted) {
            // Microphone enabled code
        }
        else {
            // Microphone disabled code
        }
    }];
}