我正在尝试编写一个使用麦克风的平均功率触发游戏响应的应用。我在-init
中使用以下代码:
NSURL *url = [NSURL fileURLWithPath:@"/dev/null"];
NSDictionary *settings = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithFloat: 44100.0], AVSampleRateKey, [NSNumber numberWithInt: kAudioFormatAppleLossless], AVFormatIDKey,[NSNumber numberWithInt: 1], AVNumberOfChannelsKey,[NSNumber numberWithInt: AVAudioQualityMax], AVEncoderAudioQualityKey,il];
NSError *error;
recorder = [[AVAudioRecorder alloc] initWithURL:url settings:settings error:&error];
if (recorder) {
[recorder prepareToRecord];
recorder.meteringEnabled = YES;
[recorder record];
levelTimer = [NSTimer scheduledTimerWithTimeInterval: 0.03 target: self selector: @selector(myMethod:) userInfo: nil repeats: YES];
在我的方法中 float soundLevel = [recorder averagePowerForChannel:0];
触发在模拟器中正常工作,但是当我把它放在手机上进行测试时无法正常工作。我做错了什么?
答案 0 :(得分:0)
我不确定@"/dev/null"
是设备上的有效路径。您的应用无法在其沙箱外读取或写入,因此设置AVAudioRecorder实例以记录到/ dev / null可能无法正常工作。
尝试为应用程序的Documents文件夹中的文件指定路径。