6 Legg til følgende . kodelinje rett under " @ grensesnittet MicBlowViewController : UIViewController {" kodelinje : . AVAudioRecorder * opptaker;
7
Legg til følgende kode rett under " [super viewDidLoad ]; " ; kodelinje : NSURL * url = [ NSURL fileURLWithPath : @ " /dev /null " ];
NSDictionary * innstillinger = [ NSDictionary dictionaryWithObjectsAndKeys : [ NSNumber numberWithFloat : 44100,0 ] , AVSampleRateKey , [ NSNumber numberWithInt : kAudioFormatAppleLossless ] , AVFormatIDKey , [ NSNumber numberWithInt : 1 ] , AVNumberOfChannelsKey , [ NSNumber numberWithInt : AVAudioQualityMax ] , AVEncoderAudioQualityKey , nil ];
NSError * feil;
opptaker = [ [ AVAudioRecorder lloc ] initWithURL : url -innstillinger : innstillinger error : & error ];
if ( opptaker ) { [ opptaker prepareToRecord ]; recorder.meteringEnabled = JA ; [ opptaker rekord ]; } else NSLog ( [ error description] ); .
8
Legg til følgende kodelinje rett under "- ( void) dealloc {" kodelinje : [ opptaker utgivelsen ];
9
Legg til. følgende kode rett under " AVAudioRecorder * opptaker; " kodelinje : NSTimer * levelTimer ;}
- ( void) levelTimerCallback : ( NSTimer * ) tidtaker,
10
Legg til følgende kodelinje rett under " [ opptaker rekord ]; " kodelinje : levelTimer = [ NSTimer scheduledTimerWithTimeInterval : 0,03 mål : self velgeren : @ velgeren ( levelTimerCallback :) UserInfo : nil gjentar : YES ] ; .
11
Klikk prosjektets " ViewController.m " filen for å vise innholdet. Skriv inn følgende kode i ViewController.m filen: - ( void) levelTimerCallback : ( NSTimer * ) timer { [ opptaker updateMeters ]; NSLog ( @ "Average inngang: % f Peak inngang: % f" , [ opptaker averagePowerForChannel : 0 ] , [ opptaker peakPowerForChannel : 0 ] ); }
12
Legg til følgende kode rett under "- ( void) dealloc {" kodelinje : . [ levelTimer utgivelse ];
13
Klikk på prosjektets " ViewController.h " filen for å vise innholdet. Legg til følgende kode rett under " NSTimer * levelTimer ; " kodelinje : . Doble lowPassResults ;
14
Finn den delen av koden som begynner med linjen " - ( void) levelTimerCallback : ( NSTimer * ) timer { "og slutter med " } "Erstatt denne delen av koden med følgende kode : - ( void) listenForBlow : . ( NSTimer * ) timer { [ opptaker updateMeters ];
< p > const double ALPHA = 0,05 ; dobbel peakPowerForChannel = pow ( 10 , ( 0,05 * [ opptaker peakPowerForChannel : 0 ] ) ) ; lowPassResults = ALPHA * peakPowerForChannel + ( 1,0 - ALPHA ) * lowPassResults ,
if ( lowPassResults > , 0,95 ) NSLog ( @ " Mic slag oppdaget "); }