1,由于没有添加控制输入输出流的AVAudioSession,真机播放无法录音;2.真机播放的音量很小;
一、问题1:添加AVAudioSession, 这里由于录制和play都需要,所以设置Category为AVAudioSessionCategoryPlayAndRecord:
NSError *categoryError = nil;
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:&categoryError];
[audioSession setActive:YES error:&categoryError];
二、问题2:真机播放音量太小,有人说设置AudioSession属性里把sizeof设成1可行:
//UInt32 doChangeDefault = 1;
//AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryDefaultToSpeaker, sizeof(doChangeDefault), &doChangeDefault);
使用后的确可以,但是ios7.0之后,AudioSessionSetProperty已经被弃用了,于是乎
~keep looking for~~~
在stackoverflow上,一位朋友 说 audioSession的 属性基本 迁移到 AVFoundation里了, 建议我们多使用 AVFoundation里的API。
NSError *audioError = nil;
BOOL success = [audioSession overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:&audioError];
if(!success) {
NSLog(@"error doing outputaudioportoverride - %@", [audioError localizedDescription]);
}