2013-09-20 3 views
20

У меня возникла проблема с AVFoundation framework. я написал демонстрационное приложение для записи аудио, играть, и вычислить децибел, с прошивкой 6. Это и работало с прошивкой тренажером встроенного Xcode 4.6.3 и мой iPhone с прошивкой 6.1.3AVAudioRecorder & AVAudioPlayer с iOS 7 не работает должным образом

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

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

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

+0

Это именно то, что со мной происходит. Все мои приложения, которые раньше работали на iOS 6, просто перестали работать в iOS 7 для AVAudioRecorder и AVAudioPlayer. В моем случае они даже не работают на симуляторе –

+0

Сэм, ваше приложение не могло воспроизводить звук? Проверьте мой ответ, как я понял, как исправить запись, но мое воспроизведение все еще работало до исправления. –

ответ

60

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

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

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

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

Большое вам спасибо, это сработало для меня, также с моего iPhone! ;) – carlodonz

+0

Я пробовал это на своем коде, но его все еще не работает. Нужно ли сначала просить разрешения использовать микрофон? Благодарю. – atbebtg

+0

@atbebtg вам может потребоваться заменить категорию на «AVAudioSessionCategoryPlayback». – Hank

5

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

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

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

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

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

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

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

Удачи!

0

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

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

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

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