Демо-приложение Apple для iPhone под названием SpeakHere не будет отвечать на kAudioSessionOverrideAudioRoute_None
Я пробовал образец приложения Apple SpeakHere и хотел слушать через динамик громкой связи вместо динамика наушников.
Я смог включить динамик громкой связи с помощью этого кода:
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory);
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride);
Но после этого приложение больше не будет записывать. Это замерзает. Этот код не приносит никакой пользы:
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory);
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_None;
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride);
Мальчик, конечно, кажется, что если вы можете включить динамик с верхним кодом, вы должны иметь возможность отключить его с другим кодом. В чем секрет?
1 ответ
Вы пытаетесь сделать это во время работы вашей аудио-очереди? Или вы останавливали аудио-очередь раньше и перезапускали ее после смены аудио-сессии?
Вы смотрели значения ошибок, возвращаемые во всех сеансах аудио и вызовах аудио-очереди, чтобы узнать, не сообщается ли об ошибке? И, если это так, каково значение ошибки?