似乎无法发出警报声
AudioServicesPlayAlertSound(kSystemSoundID_Vibrate);
当AudioQueue用于录制音频时。那是对的吗?也许我做错了什么。除了暂停录音之外,有没有办法做到这一点?
TIA。
答案 0 :(得分:5)
从阅读Apple的开发者论坛,一对开发者声称这是一个已经提交的错误。如果你将会话类型设置为kAudioSessionCategory_PlayAndRecord它应该工作..但不是。
答案 1 :(得分:1)
试试这个:
UInt32 category = kAudioSessionCategory_PlayAndRecord;
status |= AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(category), &category);
UInt32 allowMixing = true;
status |= AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryMixWithOthers, // 1
sizeof(allowMixing), // 2
&allowMixing); // 3
status |= AudioSessionSetProperty(kAudioSessionProperty_OtherMixableAudioShouldDuck, // 1
sizeof(allowMixing), // 2
&allowMixing); // 3
最后两个AudioSessionSetProperty
调用是3.0 OS中的新调用。这使我能够在录音期间播放声音和振动。
答案 2 :(得分:1)
我尝试了sehugg的建议,但没有运气?你是这样活跃的吗?
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayAndRecord error: nil];
UInt32 doSetProperty = 1;
AudioSessionSetProperty (kAudioSessionProperty_OverrideCategoryMixWithOthers, sizeof(doSetProperty), &doSetProperty);
AudioSessionSetProperty (kAudioSessionProperty_OtherMixableAudioShouldDuck, sizeof(doSetProperty), &doSetProperty);
[[AVAudioSession sharedInstance] setActive: YES error: nil];
答案 3 :(得分:0)
只是一个疯狂的猜测,但你的音频会话是否设置为kAudioSessionCategory_PlayAndRecord
?
答案 4 :(得分:0)
声音非常安静,因为当您激活VAudioSessionCategoryPlayAndRecord时,SDK会通过听筒扬声器传送声音。这可能是为了防止录音中的反馈。在PlayAndRecord模式下,您必须手动覆盖音频路径,以便再次将输出发送到扬声器。像这样:
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute,
sizeof(UInt32), &audioRouteOverride);