2010-07-06 110 views
4

我试图检测来自麦克风的输入,并播放可以打开或关闭的声音,但总是在麦克风监听器处于活动状态时播放。与iPhone SDK同时播放和录制声音?

我初始化我AVAudioSession在viewDidLoad方法,像这样:

AVAudioSession *session = [AVAudioSession sharedInstance]; 
NSError *err = nil; 
[session setCategory:AVAudioSessionCategoryPlayAndRecord error:&err]; 
[session setActive:YES error:&err]; 

然后设置要播放一个本应了声:

NSURL *activeUrl = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/audio_file.caf", [[NSBundle mainBundle] resourcePath]]]; 
activePlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:activeUrl error:nil]; 
activePlayer.numberOfLoops = -1; 
activePlayer.currentTime = 0; 
activePlayer.volume = -1.5; 

而且我使用的SCListener类做录音。当我在手机上运行它时,录音机工作得很好,但即使我在viewDidLoad方法中调用播放器时,声音也不会循环播放。

任何想法?

回答

0

我对你有类似的问题 - 代码在模拟器上工作,但不在设备上。我使用Cocos2D(Denshion)和AVAudioRecorder & AVAudioPlayer来解决这个问题。

主要问题似乎是AVAudioRecorder和AVAudioPlayer代表您设置了AVAudioSessionCategory,但是如果您自己操纵它,他们似乎记得您正在“自我管理”并停止为您进行管理。

查看this blog post帮助我(尽管我自己还没有解决这个问题;当我解决这个问题时我会更新这个帖子)。

+0

是你能解决问题 – madLokesh 2013-12-18 13:24:58