0

私はAudioRecorderを使用したそのアプリで1つのアプリを開発しています。アプリを閉じてもレコーダーが停止しません。アプリがバックグラウンドのときに赤いステータスバーが表示されます。

このコードを使用しました...

NSArray *pathComponents = [NSArray arrayWithObjects:
                                   [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject],
                                   @"MyAudioMemo.m4a",
                                   nil];
        NSURL *outputFileURL = [NSURL fileURLWithPathComponents:pathComponents];

        // Setup audio session
        AVAudioSession *session = [AVAudioSession sharedInstance];
        //[session setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];

        [session setCategory:AVAudioSessionCategoryRecord error:nil];

        // Define the recorder setting
        NSMutableDictionary *recordSetting = [[NSMutableDictionary alloc] init];

        [recordSetting setValue:[NSNumber numberWithInt:kAudioFormatMPEG4AAC] forKey:AVFormatIDKey];
        [recordSetting setValue:[NSNumber numberWithFloat:44100.0] forKey:AVSampleRateKey];
        [recordSetting setValue:[NSNumber numberWithInt: 2] forKey:AVNumberOfChannelsKey];

        // Initiate and prepare the recorder
        delegate.recorder = [[AVAudioRecorder alloc] initWithURL:outputFileURL settings:recordSetting error:nil];

        delegate.recorder.delegate=self;

        delegate.recorder.meteringEnabled = YES;
        [delegate.recorder prepareToRecord];


        //[recorder record];  // Do not start recording here

        [delegate.recorder updateMeters];
        level = [delegate.recorder peakPowerForChannel:0];

        //AVAudioSession *audioSession = [AVAudioSession sharedInstance];
        //[audioSession setActive:NO error:nil];


        timer = [NSTimer scheduledTimerWithTimeInterval:0.2  target:self
                                               selector:@selector(updateAudioMeter)
                                               userInfo:nil
                                                repeats:YES];



-(void)updateAudioMeter
{
    AppDelegate * delegate=(AppDelegate *)[[UIApplication sharedApplication]delegate];

    [delegate.recorder updateMeters];


    level = [delegate.recorder averagePowerForChannel:0];

    NSLog(@"%f",level);

    if(level<=-120)
    {
        [delegate.recorder record];
    }
    else
    {
        [delegate.recorder stop];
    }
}


- (void)applicationDidEnterBackground:(UIApplication *)application
{
    [recorder stop];
}

しかし、アプリを閉じると、赤いステータスバーが表示され、iPhone5 が記録を停止しないことを意味します。どこが間違っているのでしょうか、これを解決するのを手伝ってください。

4

0 に答える 0