2015-07-10 3 views
0

В моем приложении для какао я пытаюсь записать голос с внутреннего микрофона. Для этого я использую класс AVAudioRecorder. В приведенном ниже коде я настраиваю экземпляр AVAudioRecorder.AVAudioRecorder не записывается на OS X Mavericks

- (void)setupAudioRecorder { 

    NSMutableDictionary *recordSettings = [NSMutableDictionary dictionary]; 

    recordSettings[AVFormatIDKey] = @(kAudioFormatLinearPCM); 
    recordSettings[AVSampleRateKey] = @(16000.0); 
    recordSettings[AVNumberOfChannelsKey] = @(1); 
    recordSettings[AVLinearPCMBitDepthKey] = @(16); 
    recordSettings[AVLinearPCMIsBigEndianKey] = @(NO); 
    recordSettings[AVLinearPCMIsFloatKey] = @(NO); 

    recordSettings[AVEncoderBitRateStrategyKey] = AVAudioBitRateStrategy_Variable; 
    recordSettings[AVEncoderAudioQualityForVBRKey] = @(AVAudioQualityMedium); 
    recordSettings[AVSampleRateConverterAlgorithmKey] = AVSampleRateConverterAlgorithm_Mastering; 

    recordSettings[AVSampleRateConverterAudioQualityKey] = @(AVAudioQualityMedium); 

    NSString *file = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) 
        objectAtIndex:0] 
        stringByAppendingPathComponent:@".recorder_voice.caf"]; 

    NSFileManager *fm = [NSFileManager defaultManager]; 

    if ([fm fileExistsAtPath:file]) 
     [fm removeItemAtPath:file error:nil]; 

    NSURL *url = [NSURL fileURLWithPath:file]; 
    NSError *err = nil; 

    self.recorder.delegate = nil; 
     self.recorder = [[AVAudioRecorder alloc] initWithURL:url 
              settings:recordSettings 
               error:&err]; 
    if(!self.recorder){ 
    // show error 
    } 

    [self.recorder setDelegate:self]; 
    [self.recorder prepareToRecord]; 

    self.recorder.meteringEnabled = YES; 
} 

На Йосемите все работает нормально, но на Маверикс у меня есть тишина. Системные журналы показывают ошибку при выполнении [self.recorder prepareToRecord];:

AQMEIO.cpp: 377 _FindIOUnit: error -66680.

Что это значит и как его исправить?

ответ

0

Наконец-то я нашел ответ. Причина была в настройке проекта песочницы. Я не проверял микрофонный блок в Target -> Capabilities -> App Sanbox. Йосемити игнорируют эту проблему, но Маверикс нет.

Смежные вопросы