Microphone code doesn't run on iPhone device

Discussion in 'iPhone/iPad Programming' started by saqibjaan, Feb 8, 2012.

  1. saqibjaan, Feb 8, 2012
    Last edited by a moderator: Feb 8, 2012

    macrumors member

    Joined:
    Feb 1, 2012
    Location:
    Lahore
    #1
    I am trying to run the following code on my device with no success. Although the code works perfectly on Simulator. I have been following this tutorial. It simply crash on device.

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

    Code is:

    Code:
    @interface MicBlowViewController : UIViewController
    {
        AVAudioRecorder *recorder;
        NSTimer *levelTimer;
        double lowPassResults;
    }
    
    - (void)levelTimerCallback:(NSTimer *)timer;
    
    @end
    
    
    
    - (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: 3 
                                                          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");
    }
     
  2. macrumors 604

    chrono1081

    Joined:
    Jan 26, 2008
    Location:
    Isla Nublar
    #2
    Does your stack trace show anything?
     
  3. thread starter macrumors member

    Joined:
    Feb 1, 2012
    Location:
    Lahore
    #3
    Microphone code doesn't run on iPhone device

    I am using iPhone configuration utility to see NSLog statements. From there, I see the following lines. I am sharing the first 2 lines.


    First few lines of log are:

    unknown com.apple.launchd[1] <Warning>: (UIKitApplication:com.yourcompany.MicBlow[0xe0ef]) Job appears to have crashed: Bus error

    unknown SpringBoard[27] <Warning>: Application 'MicBlow' exited abnormally with signal 10: Bus error
     

Share This Page