20

我对 AVFoundation 框架有一些问题。我使用 iOS 6 编写了一个演示应用程序来录制音频、播放它并计算分贝。它既适用于内置 xcode 4.6.3 的 iOS 模拟器,也适用于我的带有 iOS 6.1.3 的 iPhone

现在我已经将 xcode 更新到版本 5 并再次测试了 appa。使用内置模拟器,它可以工作(适用于 iOS 6.1 和 iOS 7 模拟器)。但是,当我使用 iOS 7.0 将应用程序部署到我的 iPhone 时,它​​就不再工作了。

我正在使用AVAudioRecorderAVAudioPlayer

我不知道可能是什么问题。有什么建议么?谢谢你!

4

4 回答 4

60

我遇到了同样的问题......似乎Apple现在要求在AVAudioSession使用AVAudioRecorder. 我找不到有关此要求更改的任何文档,但是我的应用程序的录制部分现在可以正常工作。

我所做的只是创建一个audioSession,设置类别,并将其设置为活动状态。我在打电话之前就这样做了,在两种方式都有效 prepareToRecord之后我尝试了。prepareToRecord...

我希望这可以解决您的问题!

AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
[audioSession setActive:YES error:nil];
于 2013-09-22T03:20:09.667 回答
5

同样的问题。

我已经使用 AVAudioSession 修复了它。此外正确设置的类别AVAudioSession

录音时使用:

[self.audioSession setCategory:AVAudioSessionCategoryRecord error:nil];

玩的时候使用:

[self.audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];

如果我玩的时候不切换类别,注册音量很低。

祝你好运!

于 2013-11-06T11:06:49.433 回答
1

我也面临这个问题,所以首先我必须确保应用程序有权使用麦克风,方法是转到设置 -> 隐私 -> 麦克风,然后我就成功了。

于 2014-05-01T07:59:35.810 回答
0

也许您无权使用麦克风。使用此代码:

if ([audioSession respondsToSelector:@selector(requestRecordPermission:)]) {
    [audioSession performSelector:@selector(requestRecordPermission:) withObject:^(BOOL granted) {
        if (granted) {
            // Microphone enabled code
        }
        else {
            // Microphone disabled code
        }
    }];
}
于 2014-01-16T18:00:40.007 回答