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

时间:2010-04-01 09:45:04

标签: iphone audio recording

我有一个应用程序,用户可以录制声音,也可以在扬声器或耳机中播放声音。要路由音频我按以下方式设置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 个答案:

答案 0 :(得分:0)

你有这个工作吗?我相信设置音频会话类别环境将禁止录制。如果您需要同时录制和播放音频,请改用kAudioSessionCategory_PlayAndRecord,否则在需要时在它们之间来回切换。同时设置类别可能会重新初始化路由,因此您可能希望在设置类别后再次设置该路由。