Не мог слышать голос AVAudioRecorder без наушников

Я записываю голос на iPhone с помощью AVAudioRecorder, и вот мои настройки рекордера:

 NSMutableDictionary* recordSetting = [[NSMutableDictionary alloc] init];
    [recordSetting setValue :[NSNumber numberWithInt:kAudioFormatAppleIMA4] forKey:AVFormatIDKey];
    [recordSetting setValue:[NSNumber numberWithFloat:16000.0] forKey:AVSampleRateKey]; 
    [recordSetting setValue:[NSNumber numberWithInt:1] forKey:AVNumberOfChannelsKey];

Проблема в том, что я не слышу записанный голос без наушников. Я тоже хочу слышать голос без наушников. Как мне изменить свой код?


person Yogi    schedule 08.06.2011    source источник
comment
Вы проверили наличие других аудиофайлов? означает, что другие файлы воспроизводятся правильно.   -  person Sagar...    schedule 08.06.2011


Ответы (3)


Может быть, поможет принудительная маршрутизация аудиовыхода на динамик?

- (void) forceRouteAudioToSpeaker
{
    UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
    AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute,
        sizeof(audioRouteOverride), &audioRouteOverride);
}

Не забудьте указать <AudioToolbox/AudioServices.h>. Если подумать, переключение категории аудио на простое воспроизведение также должно помочь, а вы говорите, что это не так…

person zoul    schedule 08.06.2011
comment
Да, вы правы, переключение категории аудио на простое воспроизведение помогает. - person Yogi; 08.06.2011

Вы должны установить категорию AVAudiosession на AVAudioSessionCategoryPlayback перед воспроизведением звука

person Thomas K    schedule 08.06.2011

Еще одна вещь, которую следует учитывать, это то, что если вы не настроили AVAudioSession для воспроизведения, то переключатель тишины звонка на боковой панели телефона заставит ваш звук не воспроизводиться через динамик. Чтобы вы могли воспроизводить звук на телефоне с глушителем, убедитесь, что вы используете что-то подобное, прежде чем запускать AVAudioPlayer для воспроизведения файла:

AVAudioSession *session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryPlayback error:nil];
[session setActive:YES error:nil];
person Scott Miller    schedule 02.10.2012