如何在ios 7中获得话筒音量?

如何在ios 7中获得话筒音量?,ios,volume,ios7,Ios,Volume,Ios7,在ios 7中有获取话筒音量的视图吗 NSURL *url = [NSURL fileURLWithPath:@"/dev/null"]; NSDictionary *settings = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithFloat: 44100.0], AVSampleRateKey,

在ios 7中有获取话筒音量的视图吗

NSURL *url = [NSURL fileURLWithPath:@"/dev/null"];

NSDictionary *settings = [NSDictionary dictionaryWithObjectsAndKeys:
                          [NSNumber numberWithFloat: 44100.0],                 AVSampleRateKey,
                          [NSNumber numberWithInt: kAudioFormatAppleLossless], AVFormatIDKey,
                          [NSNumber numberWithInt: 0],                         AVNumberOfChannelsKey,
                          [NSNumber numberWithInt: AVAudioQualityMax],         AVEncoderAudioQualityKey,
                          nil];

NSError *error;

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

if (recorder) {
    //recorder.delegate = self;
    [recorder prepareToRecord];
    recorder.meteringEnabled = TRUE;
    [recorder record];
    levelTimer = [NSTimer scheduledTimerWithTimeInterval: 0.1 target: self selector: @selector(levelTimerCallback:) userInfo: nil repeats: YES];
} else {
    NSLog(@"");// mic error message
}

- (void)levelTimerCallback:(NSTimer *)timer {
    [recorder updateMeters];

    const double ALPHA = 0.05;
    double peakPowerForChannel = pow(10, (ALPHA * [recorder averagePowerForChannel:0]));
    db = 20* log10(peakPowerForChannel);
    db += taraturaDb;
    db = db < 0 ? 0 : db;
    lowPassResults = ALPHA * peakPowerForChannel + (1.0 - ALPHA) * lowPassResults;

    if (lowPassResults < 0.95) {
        NSLog(@"%f",db);
}
NSURL*url=[NSURL fileURLWithPath:@/dev/null];
NSDictionary*设置=[NSDictionary Dictionary WithObjectsAndKeys:
[NSNumber numberWithFloat:44100.0],AVSampleRateKey,
[NSNumber Number Withint:kAudioFormatAppleLossless],AVFormatIDKey,
[NSNumber numberWithInt:0],AVNumberOfChannelsKey,
[NSNumber Number Withint:AVAudioQualityMax],AVEncoderAudioQualityKey,
零];
n错误*错误;
记录器=[[AVAudioRecorder alloc]initWithURL:url设置:设置错误:&错误];
if(记录器){
//recorder.delegate=self;
[记录者准备记录];
recorder.meteringEnabled=真;
[录音记录];
levelTimer=[NSTimer scheduledTimerWithTimeInterval:0.1目标:自选择器:@selector(levelTimerCallback:)用户信息:无重复:是];
}否则{
NSLog(@“”);//麦克风错误消息
}
-(无效)LevelTimer回调:(NSTimer*)计时器{
[记录器更新器];
常数双α=0.05;
双峰值功率信道=功率(10,(α*[信道的记录器平均功率:0]);
db=20*log10(峰值功率信道);
db+=1 db;
db=db<0?0:db;
lowPassResults=ALPHA*峰值功率ForChannel+(1.0-ALPHA)*lowPassResults;
如果(低通结果<0.95){
NSLog(@“%f”,db);
}
这在iOS6中起作用,但在ios7中不起作用


谢谢

在初始化音频录像机之前,请先放置以下行:

AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setActive:YES error:nil];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryRecord error:nil];

谢谢,这真的帮了我的忙!这真是太棒了,只是它破坏了我的其他音效:/@FaddishWorm将音频会话类别设置为
AVAudioSessionCategoryPlayAndRecord
“此类别适用于同时录制和播放,也适用于录制和播放但不同时播放的应用程序”据任何人所知,这是否也可以安全地用于iOS 6和更低版本?