2015-07-07 3 views
4

в моем viewdidload я написалПочему мое устройство iOS не распознает мой голос?

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    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.meteringEnabled = YES; 
     [recorder record]; 
     levelTimer = [NSTimer scheduledTimerWithTimeInterval:0.03 
                 target:self 
                selector:@selector(levelTimerCallback:) 
                userInfo:nil 
                repeats:YES]; 
    } else { 
     NSLog(@"%@",[error description]); 
    } 
} 

другой способ реализации является

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

    const double ALPHA = 0.05; 
    double peakPowerForChannel = pow(10, (0.05 * [recorder peakPowerForChannel:0])); 
    lowPassResults = ALPHA * peakPowerForChannel + (1.0 - ALPHA) * lowPassResults; 

    if (lowPassResults < 0.95) 
     NSLog(@"Mic blow detected"); 
    else 
     NSLog(@"Person spoked"); 
} 

когда я запускаю мой код на тренажере, используя мой макинтош микрофон он работает, и когда я говорил, что приходит в состояние «Человек говорил, но когда я запускаю свое приложение на реальном устройстве IOS, он не обнаруживает никакого голоса, хотя я включил возможность подключения микрофона для своего приложения в «Настройки»

Что мне делать?

+1

Где мой код? – Raptor

+2

Я редактировал свой вопрос @Raptor –

+0

Является ли '[NSURL fileURLWithPath: @"/dev/null "]' разрешен? Я сомневался. – Raptor

ответ

3

Пожалуйста, используйте эту следующую строку в вашем viewDidLoad

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:nil]; 

Это будет работать для IOS устройств.

+2

Спасибо .... Вы спасли мое время. работает :) –