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