Демо-приложение Apple для iPhone под названием SpeakHere не будет отвечать на kAudioSessionOverrideAudioRoute_None - PullRequest
0 голосов
/ 28 августа 2010

Я пробовал образец приложения 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 Ответ

0 голосов
/ 28 августа 2010

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

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

...