iphone - 苹果演示iPhone应用程序SpeakHere将不会响应kAudioSessionOverrideAudioRoute_None

标签 iphone audio speakerphone

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

相关文章:

ios - UILabel 中的 iOS 值中的 UIStepper

iphone - 为什么我们在 Objective-C 或 C 语言中使用双指针和三指针?

android - 每当拨出电话时打开免提电话

Android 以编程方式设置免提电话

ios - 如何使用最新的 FBSDK 在 iOS 应用程序中集成 Facebook 而无需重定向 Safari 浏览器

iphone - glScissor 帮助 (iPhone OpenGL ES)

c++ - 尝试在 PortMidi 中打开输入

android - 如何在切换按钮上添加声音?

iphone - 录制音频中的音频处理