我找到了这个教程,这很好,但对我不起作用!
这是代码:
- (void)listenForBlow:(NSTimer *)timer {
[recorder updateMeters];
const double ALPHA = 0.05;
double peakPowerForChannel = pow(10, (0.05 * [recorder peakPowerForChannel:0]));
lowPassResults = ALPHA * peakPowerForChannel + (1.0 - ALPHA) * lowPassResults;
if (lowPassResults > 0.95)
NSLog(@"Mic blow detected");
//change the background color e.g !
}
Run Code Online (Sandbox Code Playgroud)
在控制台中向我展示这样的nslog研究(没有任何保龄球!):
2010-04-11 23:32:27.935 MicBlow[2358:207] Mic blow detected
2010-04-11 23:32:27.965 MicBlow[2358:207] Mic blow detected
2010-04-11 23:32:27.995 MicBlow[2358:207] Mic blow detected
2010-04-11 23:32:28.026 MicBlow[2358:207] Mic blow detected
2010-04-11 23:32:28.055 MicBlow[2358:207] Mic blow detected
2010-04-11 23:32:28.086 MicBlow[2358:207] Mic blow detected
2010-04-11 23:32:28.115 MicBlow[2358:207] Mic blow detected
2010-04-11 23:32:28.145 MicBlow[2358:207] Mic blow detected
2010-04-11 23:32:28.175 MicBlow[2358:207] Mic blow detected
2010-04-11 23:32:28.205 MicBlow[2358:207] Mic blow detected
2010-04-11 23:32:28.236 MicBlow[2358:207] Mic blow detected
Run Code Online (Sandbox Code Playgroud)
我改变了这个值:
if (lowPassResults < 0.95)
Run Code Online (Sandbox Code Playgroud)
至
if (lowPassResults > 0.95)
Run Code Online (Sandbox Code Playgroud)
所以看起来很有用!但是,如果我把背景改变代码,我的代码改变背景,但没有任何保龄球!有什么问题 ?
我也在使用它并且它对我有用。您只需使用该值即可将其与 进行比较lowPassResults。这是我的代码:
- (void)levelTimerCallback:(NSTimer *)计时器 {
[记录器更新仪表];
常量双 ALPHA = 0.05;
双peakPowerForChannel = pow(10, (0.05 * [记录器peakPowerForChannel:0]));
lowPassResults = ALPHA *peakPowerForChannel + (1.0 - ALPHA) * lowPassResults;
//NSLog(@"%f", lowPassResults);
if (lowPassResults > 0.55)
NSLog(@"检测到麦克风吹气");
}