AVFoundation 프레임 워크에 문제가 있습니다. 내 응용 프로그램은 모두 이전 버전에서 만든 준비가되어있다. 그리고 이번에는 오디오 레코더가 시뮬레이터에서 작동하지만 아이폰에서는 작동하지 않는다. 그래서 아무도 실제 문제가 뭔지 도와주세요.iOS 7에서 iphone으로 오디오 레코더가 작동하지 않습니다.
내 코드는 다음과
-(IBAction)startRecording
{
btnRecord.showsTouchWhenHighlighted = YES;
btnRecord.enabled = NO;
btnPlay.enabled = NO;
btnStop.enabled = YES;
btnPause.enabled = YES;
btnDelete.enabled = NO;
if(!flagPause)
{
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd"];
NSDateFormatter *timeFormat = [[NSDateFormatter alloc] init];
[timeFormat setDateFormat:@"HH.mm.SS"];
NSDate *now = [[NSDate alloc] init];
theDate = [dateFormat stringFromDate:now];
theTime = [timeFormat stringFromDate:now];
NSString *filename =[NSString stringWithFormat:@"|%@|%@|",theDate,theTime];
theDate=[[NSString alloc]initWithString:filename];
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryRecord error:nil];
***** i try this one but not working
//[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
//[audioSession setActive:YES error:nil];
NSMutableDictionary *recordSettings = [[NSMutableDictionary alloc] initWithCapacity:10];
if(recordEncoding == ENC_PCM)
{
[recordSettings setObject:[NSNumber numberWithInt: kAudioFormatLinearPCM] forKey: AVFormatIDKey];
[recordSettings setObject:[NSNumber numberWithFloat:44100.0] forKey: AVSampleRateKey];
[recordSettings setObject:[NSNumber numberWithInt:2] forKey:AVNumberOfChannelsKey];
[recordSettings setObject:[NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey];
[recordSettings setObject:[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsBigEndianKey];
[recordSettings setObject:[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsFloatKey];
}
else
{
NSNumber *formatObject;
switch (recordEncoding)
{
case (ENC_AAC):
formatObject = [NSNumber numberWithInt: kAudioFormatMPEG4AAC];
break;
case (ENC_ALAC):
formatObject = [NSNumber numberWithInt: kAudioFormatAppleLossless];
break;
case (ENC_IMA4):
formatObject = [NSNumber numberWithInt: kAudioFormatAppleIMA4];
break;
case (ENC_ILBC):
formatObject = [NSNumber numberWithInt: kAudioFormatiLBC];
break;
case (ENC_ULAW):
formatObject = [NSNumber numberWithInt: kAudioFormatULaw];
break;
default:
formatObject = [NSNumber numberWithInt: kAudioFormatAppleIMA4];
}
[recordSettings setObject:formatObject forKey: AVFormatIDKey];
[recordSettings setObject:[NSNumber numberWithFloat:44100.0] forKey: AVSampleRateKey];
[recordSettings setObject:[NSNumber numberWithInt:2] forKey:AVNumberOfChannelsKey];
[recordSettings setObject:[NSNumber numberWithInt:12800] forKey:AVEncoderBitRateKey];
//**************** I try this one ***********************>>>>
//[recordSettings setObject:[NSNumber numberWithInt:12800] forKey:AVEncoderBitRateKey];
[recordSettings setObject:[NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey];
[recordSettings setObject:[NSNumber numberWithInt: AVAudioQualityHigh] forKey: AVEncoderAudioQualityKey];
}
NSURL *url;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder
NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"Recording"];
if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath])
[[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:nil];
NSString *filePath =[NSString stringWithFormat:@"%@/%@.caf",dataPath,theDate];
// appiPhone.strATitle = theDate;
url = [NSURL fileURLWithPath:filePath];
NSError *error = nil;
audioRecorder = [[ AVAudioRecorder alloc] initWithURL:url settings:recordSettings error:&error];
if ([audioRecorder prepareToRecord] == YES)
{
[audioRecorder record];
}
else
{
//int errorCode = CFSwapInt32HostToBig ([error code]);
// NSLog(@"Error: %@ [%4.4s])" , [error localizedDescription], (char*)&errorCode);
}
}
else
{
[audioRecorder record];
flagPause = NO;
}
//appiPhone.intBtnAnsTag = 1;
}
에서라고? 그렇지 않으면 그 상태를 유지합니다. 1. 녹음 품질이 향상됩니다. – Yogi
당신이 소리를들을 수는 없지만 아마도 녹음 ... 시뮬레이터에서 작동하면 녹음 된 소리를 iphone 이어폰 스피커에 들려 줄 때 들어보십시오. –
6과 7의 차이점 중 하나는 액세스 권한이 필요하다는 것입니다 마이크. 앱에 대한 권한을 부여 받았는지 확인하십시오. 설정 -> 개인 정보 -> 마이크를 확인하십시오. – MDB983