测量iPhone的声音输入

时间:2013-04-24 09:56:08

标签: iphone audio recorder

我正在尝试在iPhone的xcode中制作一个小型声音测量应用程序,我一直在使用以下教程来激活麦克风

http://mobileorchard.com/tutorial-detecting-when-a-user-blows-into-the-mic/

我想将输入作为数字拉出并将其显示在应用中的标签中。我该怎么做呢?

我尝试过创建一个IBOutlet和标题:

@property(弱,非原子) IBOutlet UILabel * myLabel;

我尝试在以下代码中包含_mylabel部分:

if (recorder) {
    [recorder prepareToRecord];
    recorder.meteringEnabled = YES;
    [recorder record];
    levelTimer = [NSTimer scheduledTimerWithTimeInterval: 0.03 target: self selector:      @selector(levelTimerCallback:) userInfo: nil repeats: YES];
    _myLabel.text = [[NSString alloc] initWithFormat:@"%@", recorder];**
} else
    NSLog([error description]);

这是levelTimerCallback

的代码
- (void)levelTimerCallback:(NSTimer *)timer {
[recorder updateMeters];
NSLog(@"Average input: %f Peak input: %f", [recorder averagePowerForChannel:0], [recorder peakPowerForChannel:0]);}

这完全是胡说八道吗?

当我运行代码时,我附加代码的标签显示消息<AVAudioRecorder: 0x7d2b00>。但我注意到我的xcode终端开始显示麦克风的平均输入和峰值输入。但是如何将这些数据输入标签?

1 个答案:

答案 0 :(得分:4)

你应该这样做,

- (void)levelTimerCallback:(NSTimer *)timer 
{
    [recorder updateMeters];
    NSLog(@"Average input: %f Peak input: %f", [recorder averagePowerForChannel:0], [recorder peakPowerForChannel:0]);
    _myLabel.text = [NSString stringWithFormat@"Average input: %f Peak input: %f",[recorder averagePowerForChannel:0], [recorder peakPowerForChannel:0]];
}

见上文_myLabel.text将在您的方法中更新。

希望这有帮助。

修改

 _myLabel.text = [NSString stringWithFormat@"%f",[recorder averagePowerForChannel:0]]; //Only average input
 _myLabel.text = [NSString stringWithFormat@"%f",[recorder peakPowerForChannel:0]]; //Only peak input