2016-02-01 8 views
6

У меня проблема с AVAudioPlayer в Некоторое состояние. в первом моем аудиозаписывающем устройстве работает нормально. но после вызова и воспроизведения VOIP от built_in_Speaker и работы со звуком, после того, как вы повесили трубку, я не могу записывать звук со звуком сначала! но во второй раз все прекрасно работает. ЗадачаAVAudioRecorder не звучит

в состоянии, о котором я упомянул, мой звук был записан, но не имеет голоса!

Я хочу знать, в какой ситуации может случиться?

self.audioSession = [AVAudioSession sharedInstance]; 
NSError *err = nil; 
[self.audioSession setCategory :AVAudioSessionCategoryPlayAndRecord error:&err]; 
if(err){ 
    NSLog(@"audioSession: %@ %d %@", [err domain], [err code], [[err userInfo] description]); 
    return; 
} 

BOOL preparedToRecord = [self.audioRecorder prepareToRecord]; 
__block BOOL recordStarted = NO; 

err = nil; 
[self.audioSession setActive:YES error:&err]; 
if(err){ 
    NSLog(@"audioSession: %@ %d %@", [err domain], [err code], [[err userInfo] description]); 
    return; 
} 

if (preparedToRecord){ 
    recordStarted = [self.audioRecorder record]; 
} 

ответ

4

решаемые

я нашел причину этой проблемы. У меня есть addObserve мое собственное, чтобы поймать уведомление об AVAudioSession и проверить AudioSession прерывание/RoutChanging! проблема после моего звонка. Я пытаюсь изменить аудио-маршрут на динамик, но класс, который добавлен для уведомления AudioRoutChanging, пытается предотвратить это. так что сеанс аудио сеанса меняется каждую секунду и не может записывать звук.

Заключение вы должны сделать, как это для записи аудио:

1) уверен разрешение

2)[self.audioSession setActive:YES error:&err]; 

3)[self.audioSession setCategory :AVAudioSessionCategoryPlayAndRecord error:&err]; 

4) уверены в своем маршрут не будет изменений во запись.

4) уверен патч назначения

-1

Для записи звука требуется явное разрешение пользователя. В первый раз, когда аудиозапись вашего приложения пытается использовать маршрут ввода аудио, используя категорию, которая позволяет записывать, система автоматически запрашивает у пользователя разрешение. Вы можете прямо спросить, вызвав метод requestRecordPermission :. Пока пользователь не предоставит вам разрешение на запись, ваше приложение может записывать только тишину.

см здесь: https://developer.apple.com/library/prerelease/ios/documentation/AVFoundation/Reference/AVAudioSession_ClassReference/index.html

+0

я быть_наст получить разрешение в первом запуске приложения, и я упомянул я использую аудио сессию в моем вызове и он работает отлично! Я исправлю проблему, которую я объяснил здесь в ближайшее время. tnx для вашего ответа! – Mohamad

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

  • Нет связанных вопросов^_^