录制的声音不能与CocosDenshion一起播放

时间:2012-09-24 07:11:42

标签: objective-c ios cocos2d-iphone avaudiorecorder

我使用AVAudioRecorder录制语音(使用本教程http://www.tumblr.com/tagged/avaudiorecorder?before=1300075871),然后尝试使用CocosDenshion播放录制的声音:

CDSoundEngine* soundEngine = [[CDSoundEngine alloc] init];
NSArray *defs = [NSArray arrayWithObjects: [NSNumber numberWithInt:1],nil];
[soundEngine defineSourceGroups:defs];
//......
[soundEngine loadBuffer:1 filePath:[recorder.url path]];
[soundEngine playSound:1 sourceGroupId:0 pitch:2.0f pan:0 gain:1.0f loop:NO];

此代码在模拟器上运行正常,但在设备(iPad 2,iOS 5.1.1)上 - 声音无法播放。 我将尝试用AVAudioPlayer播放录制的声音 - 它播放得很好,但我需要发出声音并发现使用CocosDenshion是最简单的方法。 我应该检查或修复哪些设置或其他内容来播放录制的声音?

1 个答案:

答案 0 :(得分:0)

问题解决了,首先我改变了创建CDSoundEngine实例的方法,使用CDAudioManager:

CDSoundEngine = [CDAudioManager sharedManager].soundEngine;

然后,在将CDAudioManager的录制声音设置模式播放到kAMM_PlayAndRecord之前:

[CDAudionManager sharedManager] setMode:kAMM_PlayAndRecord];

最后将AudioSession重定向到免提电话:

UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute, sizeof (audioRouteOverride),&audioRouteOverride);

并且一切正常。