6 Lägg följande . kodrad direkt under " @ gränssnittet MicBlowViewController : UIViewController { " kodrad : . AVAudioRecorder * recorder ,
7
Lägg till följande kod direkt under " [ super viewDidLoad ] ; " ; kodrad : NSURL * url = [ NSURL fileURLWithPath : @ " /dev /null " ] ;
NSDictionary * inställningar = [ NSDictionary dictionaryWithObjectsAndKeys : [ NSNumber numberWithFloat : 44100,0 ] , AVSampleRateKey , [ NSNumber numberWithInt : kAudioFormatAppleLossless ] , AVFormatIDKey , [ NSNumber numberWithInt : 1 ] , AVNumberOfChannelsKey , [ NSNumber numberWithInt : AVAudioQualityMax ] , AVEncoderAudioQualityKey , nil ] ;
NSError * fel,
recorder = [ [ AVAudioRecorder Alloc ] initWithURL : URL : inställningar error : & error ] ;
om ( recorder ) { [ inspelare prepareToRecord ] ; recorder.meteringEnabled = YES , [ inspelare posten ] ; } else NSLog ( [ felbeskrivning ] ) ; .
8
Lägg till följande kodrad direkt under " - ( void ) dealloc { " kodrad : [ inspelare release] ;
9
Lägg till. följande kod direkt under " AVAudioRecorder * recorder , " kodrad : NSTimer * levelTimer ;}
- ( void ) levelTimerCallback : ( NSTimer * ) timer ,
10
Lägg till följande kodrad direkt under " [ brännaren post ] ; " kodrad : levelTimer = [ NSTimer scheduledTimerWithTimeInterval : 0.03 mål : self väljare : @ selector ( levelTimerCallback :) userinfo : noll upprepningar : JA ] ; .
11
Klicka projektets " ViewController.m " fil för att visa dess innehåll . Skriv följande kod i ViewController.m fil : - ( void ) levelTimerCallback : ( NSTimer * ) timer { [ inspelare updateMeters ] ; NSLog ( @ " Genomsnittliga input : % f Peak input : % f " , [ recorder averagePowerForChannel : 0 ] , [ inspelare peakPowerForChannel : 0 ] ) ; }
12
Lägg till följande kod direkt under " - ( void ) dealloc { " kodrad : . [ levelTimer release] ;
13
Klicka på projektets " ViewController.h " fil för att visa dess innehåll . Lägg till följande kod direkt under " NSTimer * levelTimer , " kodrad : . Dubbla lowPassResults ,
14
Lokalisera den del av koden som börjar med raden " - ( void ) levelTimerCallback : ( NSTimer * ) timer { "och slutar med " } " Ersätt denna del av koden med följande kod : - ( void ) listenForBlow : . ( NSTimer * ) timer { [ inspelare updateMeters ] ;
const double ALPHA = 0,05 ; dubbel peakPowerForChannel = pow ( 10 , ( 0.05 * [ inspelare peakPowerForChannel : 0 ] ) ) ; lowPassResults = ALPHA * peakPowerForChannel + ( 1,0 - ALPHA ) * lowPassResults ,
p Om ( lowPassResults > , 0,95 ) NSLog ( @ " Mic blow upptäckt " ) ;} Addera