0

我正在试用 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); 

男孩,看起来如果您可以使用顶级代码打开扬声器,您应该能够使用其他代码将其关闭。秘诀是什么?

4

1 回答 1

0

您是否尝试在音频队列运行时执行此操作?或者您之前是否停止了音频队列并在更改音频会话后重新启动它?

您是否查看了所有音频会话和音频队列调用的错误返回值以查看是否报告了错误?如果是这样,错误值是多少?

于 2010-08-28T06:22:34.087 回答