iPhone SDK: установите аудиомаршрут, а также отключите звук, когда переключатель отключения звука включен

У меня есть приложение, в котором пользователь может записывать звук, а также воспроизводить звук либо в динамике, либо в наушнике. Для маршрутизации аудио я устанавливаю kAudioSessionProperty_OverrideAudioRoute следующим образом:

if(loudSpeakerOn) {
    audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
}
else {
    audioRouteOverride = kAudioSessionOverrideAudioRoute_None;
}
AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute, sizeof(audioRouteOverride), &audioRouteOverride);

Я также должен убедиться, что когда пользователь включает/выключает переключатель отключения звука/вибрации, звук должен отключаться/включаться. Для этого я установил следующее свойство

SInt32  ambient = kAudioSessionCategory_AmbientSound;
if (AudioSessionSetProperty (kAudioSessionProperty_AudioCategory, sizeof(ambient), &ambient)) {
    NSLog(@"*** Error *** could not set Session property to ambient.");
}

Теперь проблема в том, что когда я устанавливаю свойство Ambient, аудиомаршрут и аудиозапись перестают работать.

Как я могу заставить все это работать вместе?

Спасибо!


person Mithin    schedule 01.04.2010    source источник


Ответы (1)


У вас это сработало? Я полагаю, что установка категории аудиосессий «Амбиент» запретит запись. Если вам нужно одновременно записывать и воспроизводить звук, используйте вместо этого kAudioSessionCategory_PlayAndRecord, в противном случае переключайтесь между ними, когда они вам нужны. Кроме того, установка категории может привести к повторной инициализации маршрутизации, поэтому вы, вероятно, захотите установить ее снова после установки категории.

person user308526    schedule 12.05.2010