iPhone SDK:设置音频路由并在静音开关打开时静音音频

Posted

技术标签:

【中文标题】iPhone SDK:设置音频路由并在静音开关打开时静音音频【英文标题】:iPhone SDK: Set audio route and also mute audio when mute switch is turned on 【发布时间】:2010-04-01 09:45:04 【问题描述】:

我有一个应用程序,用户可以在其中录制声音并在扬声器或听筒中播放声音。要路由音频,我通过以下方式设置 kAudiosessionProperty_OverrideAudioRoute:

if(loudSpeakerOn) 
    audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;

else 
    audioRouteOverride = kAudioSessionOverrideAudioRoute_None;

AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute, sizeof(audioRouteOverride), &audioRouteOverride);

我还应该确保当用户打开/关闭静音/振动开关时,声音应该静音/取消静音。为此,我设置了以下属性

SInt32  ambient = kAudioSessionCategory_AmbientSound;
if (AudioSessionSetProperty (kAudioSessionProperty_AudioCategory, sizeof(ambient), &ambient)) 
    NSLog(@"*** Error *** could not set Session property to ambient.");

现在,问题是当我设置 Ambient 属性时,音频路由和音频录制停止工作。

我怎样才能让所有这些一起工作?

谢谢!

【问题讨论】:

【参考方案1】:

你搞定了吗?我相信设置音频会话类别环境将不允许录制。如果您需要同时录制和播放音频,请改用 kAudioSessionCategory_PlayAndRecord,否则在需要时在它们之间来回切换。此外,设置类别可能会重新初始化路由,因此您可能需要在设置类别后再次设置。

【讨论】:

以上是关于iPhone SDK:设置音频路由并在静音开关打开时静音音频的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 5 中检测 iPhone 静音开关

iOS 铃声开关使网络音频静音

iPhone:如何播放忽略音量和铃声开关设置的声音?

如何在设置页面中设置打开和关闭iphone声音的开关

AVAudioSessionCategoryPlayAndRecord 未检测到静音开关

在 iOS 7 问题中检测静音开关