我遇到了AVFoundation框架的一些问题。 我用iOS 6编写了一个演示应用来录制音频,播放和计算分贝。 它既可以使用iOS模拟器内置的xcode 4.6.3,也可以使用我的iPhone和iOS 6.1.3
现在我将xcode更新到版本5并再次测试了appa。使用内置模拟器(适用于iOS 6.1和iOS 7模拟器)。但是当我使用iOS 7.0将应用程序部署到我的iPhone时,它不再起作用了。
我正在使用AVAudioRecorder
和AVAudioPlayer
。
我不知道会出现什么问题。有什么建议?谢谢!
答案 0 :(得分:60)
我遇到了同样的问题......似乎Apple现在要求在使用AVAudioSession
之前使用AVAudioRecorder
。我无法找到有关此更改要求的任何文档,但我的应用程序的录制部分现在正在运行。
我所做的就是创建一个audioSession
,设置类别,并将其设置为活动状态。我在调用prepareToRecord
之前做了这个,我在调用prepareToRecord...
之后尝试了两种方法。
我希望这可以解决您的问题!
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
[audioSession setActive:YES error:nil];
答案 1 :(得分:5)
同样的问题。
我已经使用AVAudioSession修复了它。此外,正确设置AVAudioSession
:
录制时使用:
[self.audioSession setCategory:AVAudioSessionCategoryRecord error:nil];
玩游戏时使用:
[self.audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];
如果我在播放时没有切换类别,则注册音量非常低。
祝你好运!
答案 2 :(得分:1)
我也面临着这个问题 首先,我必须通过转到设置确保应用程序有权使用麦克风 - >隐私 - >麦克风 然后我获得了成功。
答案 3 :(得分:0)
也许您无权使用麦克风。使用此代码:
if ([audioSession respondsToSelector:@selector(requestRecordPermission:)]) {
[audioSession performSelector:@selector(requestRecordPermission:) withObject:^(BOOL granted) {
if (granted) {
// Microphone enabled code
}
else {
// Microphone disabled code
}
}];
}