【发布时间】:2012-03-31 03:38:30
【问题描述】:
我目前正在开发一款支持应用内录音的应用。用户可以通过应用程序获得他/她已经录制的本地保存的音频文件的标准表格视图,或者按下按钮进入新的录制视图,从那里可以录制新的音频会话,这将自动获取保存到应用沙箱。 现在这个功能大部分时间都运行良好。我可以录制新文件并从应用程序播放它们,但在随机时间,录音机将无法以这种方法开始录制:
-(void) startRecording
{
if (!isRecording)
{
isRecording = YES;
BOOL recordingSucess = [audioRecorder record];
if (recordingSucess)
NSLog(@"WE STARTED THE RECORDING!");
else
NSLog(@"WE DID NOT START THE RECORDING!");
// Start the timer
recordTiming = [NSDate date];
timeCheck = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(timeCheck) userInfo:nil repeats:YES]
}
即NSLog会打印出“We did not start the recording”,表示启动录制失败。这导致一个空的音频文件仍然保存到应用程序中,文件大小为 4096 字节。 这是录音机对象的初始化方式:
-(id) initWithContentURL:(NSURL *)contentURL
{
self = [super init];
if (self)
{
NSLog(@"Initializing audio recorder!");
// Specific settings for the audio recording
NSDictionary *recordSettings = [NSDictionary
dictionaryWithObjectsAndKeys:
[NSNumber numberWithInt:AVAudioQualityMin],
AVEncoderAudioQualityKey,
[NSNumber numberWithInt:8],
AVEncoderBitRateKey,
[NSNumber numberWithInt: 2],
AVNumberOfChannelsKey,
[NSNumber numberWithFloat:22000.0],
AVSampleRateKey,
nil];
NSError *error = nil;
audioRecorder = [[AVAudioRecorder alloc] initWithURL:contentURL settings:recordSettings error:&error];
audioRecorder.delegate = self;
}
还有 NSLog 检查,检查错误是否为 nil,所以在这一点上我确定初始化似乎没有失败。 究竟是什么导致记录方法在看似随机的时间失败,而在大多数其他时间却运行良好?
【问题讨论】:
标签: iphone objective-c ios xcode avaudiorecorder