我正在开发一个应用程序,它应该具有以下有关音频的属性:
- 可以同时录制和播放声音
- 可以将音频输出与其他应用程序混合,例如iPod
- 未插入耳机时扬声器音频输出
- 插入耳机时音频输出
我使用了以下代码。
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
NSError *audioSessionError;
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:&audioSessionError];
UInt32 mix = 1;
AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryMixWithOthers, sizeof(mix), &mix);
UInt32 route = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute, sizeof(route), &route);
[audioSession setActive:YES error:&audioSessionError];
然而,我可以实现1-3,但在4处失败。插入耳机时,音频仍然通过扬声器发出。然后我尝试设置kAudioSessionProperty_OverrideCategoryDefaultToSpeaker
代替kAudioSessionProperty_OverrideAudioRoute
,但这会导致 iPod 暂停,而不是混合两个音频。有人可以帮忙指出上面的代码有什么问题吗?
谢谢你的帮助。
我认为这:
UInt32 route = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute, sizeof(route), &route);
具体来说就是使用扬声器。默认操作(插入耳机时使用耳机)应该是:
UInt32 route = kAudioSessionOverrideAudioRoute_None;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)