我正在试用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);
伙计,如果您可以使用顶部代码打开扬声器,那您肯定应该可以使用其他代码将其关闭。有什么 secret ?
最佳答案
您是否正在尝试在音频队列运行时执行此操作?还是在更改音频 session 之前停止了音频队列,然后重新启动了它?
您是否查看了所有音频 session 和音频队列调用中的错误返回值,以查看是否报告了错误?而且,如果是这样,错误值是多少?
关于iphone - 苹果演示iPhone应用程序SpeakHere将不会响应kAudioSessionOverrideAudioRoute_None,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3589256/