更新到ios5刻录机不再起作用

时间:2011-11-18 10:05:03

标签: ios5 avaudiorecorder

我有一个应用程序一直工作,直到我在设备上安装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 :(得分:0)

我已经下载了最新的xcode,试过

Documents或Cache而不是/ dev / null但没有运气

我已经解决但不知道为什么它停止了工作。

上面的代码被放在一个单例类中,在应用程序启动时加载并初始化一次。

似乎记录只有一个语音功率然后停止(即使我已经控制记录=真,计数启用=真实ecc ...在日志中)

现在我已经在singleton类的方法中放了相同的代码,并从屏幕“ingame”的文件调用该方法并且有效...

mmm .......任何想法为什么会发生?

答案 1 :(得分:0)

使用以下代码替换urlpath:

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

NSURL * url = [NSURL fileURLWithPath:filepath];