1

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

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

我想将输入提取为数字并将其显示在应用程序的标签中。我该怎么做呢?

我试过创建一个 IBOutlet 和像这样的标题:

@property (weak,nonatomic) 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]);}

这完全是胡说八道吗?

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

4

1 回答 1

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
于 2013-04-25T04:21:17.457 回答