6 Voeg de volgende . regel code direct onder de ' @ -interface MicBlowViewController : UIViewController { " regel code : . AVAudioRecorder * recorder ;
7
Voeg de volgende code direct onder de " [ super viewDidLoad ] ; " , regel code : NSURL * url = [ NSURL fileURLWithPath : @ " /dev /null " ] ;
NSDictionary
* instellingen = [ 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 : instellingen die fout: & error ] ;
if ( blokfluit ) { [ recorder prepareToRecord ] ; recorder.meteringEnabled = YES ; [ recorder opnemen ] ; } else NSLog ( [ error beschrijving] ) ; .
8
Voeg de volgende regel code direct onder de " - (void ) dealloc { " regel code : [ recorder release] ;
9
toevoegen . de volgende code direct onder de " AVAudioRecorder * recorder ; " regel code : NSTimer * levelTimer ; }
- (void ) levelTimerCallback : ( NSTimer * ) timer ;
10
Voeg de volgende regel code direct onder de " [ recorder opnemen ] ; " regel code : levelTimer = [ NSTimer scheduledTimerWithTimeInterval : 0.03 doel : zelf selector : @ selector ( levelTimerCallback :) userInfo : nihil herhaalt : JA ] ; .
11
Klik op " ViewController.m " bestand van het project om de inhoud te bekijken . Voer de volgende code in het ViewController.m bestand : - (void ) levelTimerCallback : ( NSTimer * ) timer { [ recorder updateMeters ] ; NSLog ( @ " Gemiddeld invoer : % f Piek ingang : % f " , [ recorder averagePowerForChannel : 0 ] , [ recorder peakPowerForChannel : 0 ] ) ; }
12
Voeg de volgende code direct onder de " - (void ) dealloc { " regel code : . [ levelTimer release] ; < br >
Klik 13 op " ViewController.h " bestand van het project om de inhoud te bekijken . Voeg de volgende code direct onder de " NSTimer * levelTimer ; " regel code : . Dubbele lowPassResults ;
14
Zoek het gedeelte van de code die begint met de regel " - (void ) levelTimerCallback : ( NSTimer * ) timer { " en eindigt met " } " Vervang dit deel van de code met de volgende code : - (void ) listenForBlow : . ( NSTimer * ) timer { [ recorder updateMeters ] ;
const dubbele ALPHA = 0,05 ; dubbele peakPowerForChannel = pow ( 10 , ( 0.05 * [ recorder peakPowerForChannel : 0 ] ) ) ; lowPassResults = ALPHA * peakPowerForChannel + ( 1.0 - ALPHA ) * lowPassResults ;
if ( lowPassResults > , 0.95 ) NSLog ( @ " Mic klap gedetecteerd " ) ; }