-3

私はAppleのAurioTouchサンプルコードを調べています。風速計のように風速を測るのにどうやって使うのかしら。これに関する提案はありますか?マイクは音に反応し、マイクに空気を吹き込むと音だけが測定されます。風速を測定するためにこれを実装するにはどうすればよいですか?誰でもこれについて私を助けることができますか?

4

1 に答える 1

2

AVAudioRecorder を使用してこれを行うことができます。

// 1 .Init AVAudioRecorder を次のようにします。

    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,
                                      nil];

            NSError *error;

            recorder = [[AVAudioRecorder alloc] initWithURL:url settings:settings error:&error];

            if (recorder) {
                [recorder prepareToRecord];
                //        recorder.delegate = self;
                recorder.meteringEnabled = YES;
                [recorder record];

            }

// 2. タイマーを開始して平均電力を取得する

levelTimer = [NSTimer scheduledTimerWithTimeInterval: 0.03 target: self selector: @selector(levelTimerCallback) userInfo: nil repeats: YES];

-(void)levelTimerCallback
{
    [recorder updateMeters];

    float peak = [recorder averagePowerForChannel:0];
    float value = [meterTable valueAt:peak];
    //meterTable = [[MeterTable alloc] initWithMinDecibels:-80. TableSize:50 Root: 1.3];
    //Value 0.0~1.0 ,
}

Apple の例avTouchから MeterTable を取得できます

于 2013-01-16T03:52:35.077 に答える