AVAudioRecorder不更新peakPowerForChannel iphone

Joh*_*tty 1 iphone objective-c avaudiorecorder

对于我的cocos 2D游戏,我想从iphone的麦克风中检测语音,它应该自动播放,我正在使用avaudiorecorder的peakPowerForChannel代码:

const double ALPHA = 0.05;
    NSString *currentRecorder=@"nil";
            NSError *error;
    if(checker.recording){
        [checker updateMeters];
        currentRecorder=@"checker";
        peakPowerForChannel = pow(10, (ALPHA* [checker peakPowerForChannel:0]));
    }
    else if (recorder.recording) {
        [recorder updateMeters];
        peakPowerForChannel = pow(10, (ALPHA * [recorder peakPowerForChannel:0]));
         currentRecorder=@"recorder";
    }
   // NSLog(@"-------------- %f",lowPassResults);
    lowPassResults = ALPHA * peakPowerForChannel + (1.0 - ALPHA) * lowPassResults;  
    NSLog(@"%@ >>>>>>>>>>>>>>>>>>>>>> %f   peakPowerForChannel ---%f",currentRecorder,lowPassResults,peakPowerForChannel);
  if (lowPassResults >0.4){
        if (!recorder.recording) {
            [checker stop];
}
    else{
        if (recorder.recording) {
            [recorder stop];
 [checker record];

        }
    }
Run Code Online (Sandbox Code Playgroud)

它第一次工作正常.播放音频后,[recorder peakPowerForChannel:0]给出一个常数值我该如何解决这个问题

谢谢

小智 5

[recorder updateMeters]仅更新一次值.每次检查[recorder peakPowerForChannel:0]价值.你必须打电话给[recorder updateMeters]方法.这么好的方法是在检查值[recorder updateMeters]之前检查计时器和调用方法中的值.