1.在做录制歌曲的功能的时候,遇到了模拟器正常,但是真机测试时不能完成合成的功能,解决方案如下:
在设置AVAudioSession的对象属性时,其中要这样设置:
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:&err];
这样设置虽然解决了录音的同时可以播放音频,但是如果没有接入音频设备的时候,音频的播放音量特别小,这是因为将category设置为AVAudioSessionCategoryPlayAndRecord时,默认的声音输出为手机听筒。所以为什么调节音量的时候,就算调到最大,但外放音量还是特别的小。那么这个问题应该怎么解决呢?
遇到问题,就是我们提高的机会。经过不懈的努力,终于找到解决的方法。话不多说,代码如下:
查找资料后,有两种方法。
方法一:修改category的默认行为
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker error:&error];
方法二:OverrideOutputAudioPort 方法
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:&err];
[audioSession overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:&error];
注意:这样设置了可以指定没有外置设备的时候使用扬声器进行播放音频,但是如果接入音频设备后,音频设备是没有声音的,这是因为你设置限定了输出方式。这时候怎么办?判断呀!判断有没有接入外置设备,有的话怎样怎样,没有的话怎样怎样(此处省略20000行代码)。
这样基本上就解决了,边录音边播放音频的功能。文笔粗糙,看官留情。不足之处,还请指教。
这是目前研究到的水平,后期会继续完善补充。也可能推翻重写。能解决问题就好。