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
.
Я не знаю, в чем проблема. Какие-либо предложения? спасибо!
Ответы
Ответ 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
}
}];
}