在后台录制语音使用AVAudioRecorder [英] Recording voice in background using AVAudioRecorder

查看:499
本文介绍了在后台录制语音使用AVAudioRecorder的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图使用记录在后台用户语音 AVAudioRecorder 但每次我得到的时间 NO 同时呼吁 recordForDuration 方法。我想补充声音来 UIBackgroundModes 但这没有帮助。
顺便说一句,一切工作在前台完美。我初始化 AVAudioRecorder 使用此code:

I'm trying to record user voice in background using AVAudioRecorder but every time i get NO while calling recordForDuration method. I add "audio" to UIBackgroundModes but this don't help. By the way, Everything works perfect in foreground. I'm initializing AVAudioRecorder using this code:

NSError* error;
if (![[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryRecord error:&error])
{
    NSLog(@"Error while setting audio session category. Code - %d, description - \"%@\".", [error code], [error localizedDescription]);
    return;
}

NSURL* outputFileURL = [VKMFileSystemHelper uniqueFileInPath:[[VKMFileSystemHelper subdirectoryInsideLibrary:DIR_AUDIO] path] withExtension:@"m4a"];

NSDictionary* recordSettings = [NSDictionary dictionaryWithObjectsAndKeys:
                                    [NSNumber numberWithInt:kAudioFormatMPEG4AAC], AVFormatIDKey,
                                    [NSNumber numberWithInt:AVAudioQualityMin]   , AVEncoderAudioQualityKey,
                                    [NSNumber numberWithInt:16]                  , AVEncoderBitRateKey,
                                    [NSNumber numberWithInt:1]                   , AVNumberOfChannelsKey,
                                    [NSNumber numberWithFloat:12000.0]           , AVSampleRateKey,
                                    nil];

_recorder = [[AVAudioRecorder alloc] initWithURL:outputFileURL settings:recordSettings error:&error];
[_recorder setDelegate:self];

if (error)
{
    NSLog(@"Error occured during audio recorder initialization. Error code - %d, description - \"%@\".", [error code], [error localizedDescription]);
}
else
{
    NSLog(@"Start recording.");
    if ([_recorder recordForDuration:[shedule execLength]])
    {
        NSLog(@"Record started.");
    }
    else
    {
        NSLog(@"Record failed.");
    }            
}

我如何能记录从麦克风的背景是什么?这可能吗?

How can i record from microphone from background ? Is this possible?

推荐答案

试试这个,

        ***Appdelegate.m***

- (void)applicationDidEnterBackground:(UIApplication *)application
{
__block UIBackgroundTaskIdentifier task = 0;
task=[application beginBackgroundTaskWithExpirationHandler:^{
    NSLog(@"Expiration handler called %f",[application backgroundTimeRemaining]);
    [application endBackgroundTask:task];
    task=UIBackgroundTaskInvalid;
}];

}

这篇关于在后台录制语音使用AVAudioRecorder的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆