【问题标题】:Apple demo iPhone app called SpeakHere won't respond to kAudioSessionOverrideAudioRoute_None名为 SpeakHere 的 Apple 演示 iPhone 应用程序不会响应 kAudioSessionOverrideAudioRoute_None
【发布时间】:2010-08-28 02:52:44
【问题描述】:

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

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

【问题讨论】:

    标签: iphone audio speakerphone


    【解决方案1】:

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

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

    【讨论】:

    • 我没有注意到音频队列。我只是将“扬声器开启”代码附加到按下播放按钮时执行的代码,并将“扬声器关闭”代码附加到按下录制按钮时执行的代码。
    • 在更改音频会话类型之前尝试关闭音频队列。如果用户期望声音输出移动,他们不会注意到故障。检查会话更改的错误状态后重新启动队列。
    猜你喜欢
    • 2011-11-07
    • 2014-11-22
    • 1970-01-01
    • 1970-01-01
    • 2011-05-08
    • 2017-01-15
    • 1970-01-01
    • 1970-01-01
    • 2014-12-12
    相关资源
    最近更新 更多