Демо-приложение 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 ответ

Вы пытаетесь сделать это во время работы вашей аудио-очереди? Или вы останавливали аудио-очередь раньше и перезапускали ее после смены аудио-сессии?

Вы смотрели значения ошибок, возвращаемые во всех сеансах аудио и вызовах аудио-очереди, чтобы узнать, не сообщается ли об ошибке? И, если это так, каково значение ошибки?

Другие вопросы по тегам