我有一个应用程序一直工作,直到我在设备上安装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不再工作?
不兼容?
谢谢
答案 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];