1
lanzamiento Xcode y abra el proyecto basado en vistas que desea detectar cuando un usuario sopla en el micrófono.
2
Haga clic en la flecha a la izquierda de la opción " Targets" , a continuación, haga clic en el elemento que lleva el nombre de la aplicación. Por ejemplo, si se llama a la aplicación " GenericGame ", el tema se llama " GenericGame . " Mueve el cursor del ratón sobre la opción "Add " y seleccione la opción " Marcos existentes ... " opción.
3
clic en el botón "+ ", seleccione la opción " AVFoundation.framework " y haga clic en el botón " Add" .
4
Haga clic en la flecha situada a la izquierda de la carpeta con el nombre del proyecto. Por ejemplo, si el proyecto se denomina " GenericGame ", haga clic en la flecha situada a la izquierda de la carpeta " GenericGame " . Haga clic en la flecha a la de la carpeta " Clases" a la izquierda y haga clic en el archivo " ViewController.h " para ver el contenido del archivo .
5
Agregue las siguientes dos líneas de código justo debajo de la " # import line Agregue la siguiente . línea de código justo debajo de la " @ interface MicBlowViewController : UIViewController {" línea de código: . AVAudioRecorder * grabador ; Añada el siguiente código justo debajo de la " [super viewDidLoad ] ; " , la línea de código: NSURL * url = [ NSURL fileURLWithPath : @ " /dev /null "]; NSDictionary * Ajustes = [ dictionaryWithObjectsAndKeys NSDictionary : [ NSNumber numberWithFloat : 44100.0 ] , AVSampleRateKey , [ NSNumber numberWithInt : kAudioFormatAppleLossless ] , AVFormatIDKey , [ NSNumber numberWithInt : 1 ] , AVNumberOfChannelsKey , [ NSNumber numberWithInt : AVAudioQualityMax ] , AVEncoderAudioQualityKey , nil ] ; NSError * error ; = [ [ AVAudioRecorder alloc ] initWithURL : configuración de uRL: error ajustes : & error ] ; if ( grabadora) {[ grabador prepareToRecord ] ; recorder.meteringEnabled = YES; [ registrador ] ; } else NSLog ( [ descripción de error ] ) . Agregue la siguiente línea de código justo debajo de la " - ( void) dealloc {" línea de código: [ grabador de liberación ] ; Agregar . el siguiente código justo debajo de la " AVAudioRecorder * grabador , " línea de código: NSTimer * levelTimer ;} - ( void) levelTimerCallback : ( NSTimer *) temporizador ; Agregue la siguiente línea de código justo debajo de la " [ registrador ] ; " línea de código: levelTimer = [ NSTimer scheduledTimerWithTimeInterval : 0,03 target: selector auto : @ selector ( levelTimerCallback :) userInfo : repite nil : YES] ; . clic archivo " ViewController.m " del proyecto para ver su contenido . Escriba el siguiente código en el archivo ViewController.m : - ( void) levelTimerCallback : ( NSTimer *) timer {[ grabador updateMeters ] ; NSLog ( @ " de entrada promedio: % f de entrada pico: % f" , [ grabador averagePowerForChannel : 0 ] , [ grabador peakPowerForChannel : 0 ] ) ;} Añada el siguiente código justo debajo de la " - ( void) dealloc {" línea de código: . [ levelTimer liberación ], Haga clic en el archivo " ViewController.h " del proyecto para ver su contenido . Agregue el código siguiente justo debajo de la " NSTimer * levelTimer , " línea de código: . LowPassResults dobles; Localice la sección de código que comienza con la línea " - ( void) levelTimerCallback : ( NSTimer *) timer { "y termina con " } "Reemplazar esta sección de código con el siguiente código: - ( void) listenForBlow : . ( NSTimer *) timer { [ updateMeters grabadora ] ; if ( lowPassResults > ; 0,95 ) NSLog ( @ " golpe Mic detectado" ) ;}
6
7
grabadora
8
9
10
11
12
Página 13
14
< p > const double ALPHA = 0,05 ; doble peakPowerForChannel = pow ( 10 , ( 0,05 * [ grabador peakPowerForChannel : 0 ])) ; lowPassResults = ALPHA * peakPowerForChannel + ( 1.0 - ALPHA ) * lowPassResults ;