обновление до ios5 рекордер больше не работает - PullRequest
0 голосов
/ 18 ноября 2011

У меня всегда есть приложение, пока я не установил ios5 на устройство. это код.

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

    //NSLog(@"url");
    NSURL *url = [NSURL fileURLWithPath:@"/dev/null"];
    //NSLog(@"dizionario");
    NSDictionary *audioSettings = [NSDictionary dictionaryWithObjectsAndKeys:
                                   [NSNumber numberWithFloat: 44100.0],                 AVSampleRateKey,
                                   [NSNumber numberWithInt: kAudioFormatAppleLossless], AVFormatIDKey,
                                   [NSNumber numberWithInt: 1],                         AVNumberOfChannelsKey,
                                   [NSNumber numberWithInt: AVAudioQualityMax],         AVEncoderAudioQualityKey,
                                   nil];
    NSError *error;    
    bool b;


    //NSLog(@"audio");
    recorder = [[AVAudioRecorder alloc] initWithURL:url settings:audioSettings error:&error];
    //NSLog(@"audio");
    if (recorder) {
        //NSLog(@"prepara");
        b=[recorder prepareToRecord];
        //NSLog(@"%@",(b ? @"OK" : @"NO"));
        //NSLog(@"meter");
        recorder.meteringEnabled = YES;
        //NSLog(@"recorder");
        b=[recorder record];
        //NSLog(@"%@", (b ? @"OK" : @"NO"));            
        //        NSLog(@"leveltimer");
        //        levelTimer = [NSTimer scheduledTimerWithTimeInterval: 0.03 target: self selector: @selector(levelTimerCallback:) userInfo: nil repeats: YES];
    } else {
        NSLog(@"************** ERRORE: ****************");
        NSLog([error description]);    
    }

В результате рекордер записывает тишина, нет пиковой мощности, нет средней мощности. я использую xcode4 (ios inxcode4 до 4.3, я не скачал последнюю версию xcode) почему в ios5 больше не работает? не совместимо? спасибо

Ответы [ 2 ]

0 голосов
/ 18 марта 2012

замените путь URL-адреса следующим кодом:

NSString * documentsDirectory = [NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex: 0];NSString * filepath = [documentsDirectory stringByAppendingPathComponent: @ "Files"];

NSURL * url = [NSURL fileURLWithPath: filepath];

0 голосов
/ 21 ноября 2011

я скачал последний xcode, попробовал

документы или кэш вместо / dev / null, но не повезло

я решил, но не знаю, почему он перестал работать.

приведенный выше код был помещен в одноэлементный класс, загруженный и инициализированный один раз при запуске приложения.

кажется, что запись только одной мощности голоса затем останавливается (даже если я контролировал эту запись = true, измерениеenabled = true ecc ... в логах)

теперь я поместил тот же код в метод класса singleton и вызвал этот метод из файла экрана "внутриигровой" и работает ...

ммм ....... есть идеи, почему это происходит?

...