Tecnología

Inicio

Cómo detectar el golpe del Mic en xCode

aplicación de programación Xcode de Apple permite a los programadores con conocimientos de programación C y Objective-C desarrollar aplicaciones para el iOS y OS X plataformas. Si está desarrollando una aplicación para un dispositivo iOS y desea que la aplicación sea capaz de detectar cuando un usuario sopla en el micrófono, hay una manera muy específica para codificar la aplicación para permitir que lo haga. Este código implica permitir la aplicación para recibir la entrada del micrófono, el muestreo del nivel de audio y diciendo a la aplicación para escuchar el sonido de alguien que sopla en el micrófono, todo lo cual puede ser implementado en la aplicación Xcode.

Instrucciones

1 Lanzar Xcode y abra el proyecto basado en la opinión de que desea detectar cuando un usuario sopla en el micrófono.

2 Haga clic en la flecha situada a la izquierda de la opción "Objetivos", a continuación, haga clic en el elemento que lleva el nombre de la aplicación. Por ejemplo, si la aplicación se denomina "GenericGame", el artículo será nombrado "GenericGame." Mover el cursor del ratón sobre la opción "Agregar" y seleccione la opción "Marcos existentes ..." opción.

3 Haga clic en el botón "+", seleccione la opción "AVFoundation.framework" y haga clic en el botón "Añadir".

4 Haga clic en la flecha a la izquierda de la carpeta con el nombre del proyecto. Por ejemplo, si el proyecto se denomina "GenericGame", haga clic en la flecha 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 Añadir las siguientes dos líneas de código directamente debajo de la "import <UIKit / UIKit.h>" línea de código:

importación <AVFoundation / AVFoundation.h> Importar <CoreAudio / CoreAudioTypes.h>.

6 Agregue la siguiente línea de código directamente debajo de la "MicBlowViewController @interface: UIViewController {" línea de código:
AVAudioRecorder * grabador ;.

7 Agregue el código siguiente directamente debajo de la "[súper viewDidLoad];" línea de código:
NSURL * url = [NSURL fileURLWithPath: @ "/ dev / null"];

NSDictionary * settings = [dictionaryWithObjectsAndKeys NSDictionary:
[NSNumber numberWithFloat: 44100.0], AVSampleRateKey,
[NSNumber numberWithInt: kAudioFormatAppleLossless], AVFormatIDKey,
[NSNumber numberWithInt: 1], AVNumberOfChannelsKey,
[NSNumber numberWithInt: AVAudioQualityMax], AVEncoderAudioQualityKey,
nulo];

* NSError de error;

grabadora = [[AVAudioRecorder alloc] initWithURL: ajustes de configuración url: error: & error];

si (grabador) {
[Grabador prepareToRecord];
recorder.meteringEnabled = SI;
[Grabador de disco];
} else
NSLog ([descripción de error]) ;.

8 Agregue la siguiente línea de código directamente debajo de la "- dealloc (void) {" línea de código:
[Grabador de liberación] ;.

9 Agregue el código siguiente directamente debajo de la

"grabadora de AVAudioRecorder;" línea de código:
NSTimer levelTimer;
}

(void) levelTimerCallback: (NSTimer *) temporizador; 10 Agregue la siguiente línea de código directamente debajo de la "[registro grabadora];" línea de código:
levelTimer = [NSTimer scheduledTimerWithTimeInterval: 0,03 objetivo: Selector auto: @selector (levelTimerCallback :) userInfo: cero repeticiones: YES] ;.

11 Haga clic en el archivo "ViewController.m" del proyecto para ver su contenido. Introduce el siguiente código en el archivo ViewController.m:

(Void) levelTimerCallback: (NSTimer *) {temporizador
[Grabador updateMeters];
NSLog (@ "media entrada: entrada de% f Pico:% f", [Grabadora averagePowerForChannel: 0], [peakPowerForChannel casetes: 0]);
}

12 Agregue el código siguiente directamente debajo de la "- dealloc (void) {" línea de código:
[Comunicado de levelTimer] ;.

13 Haga clic en el archivo "ViewController.h" del proyecto para ver su contenido. Agregue el código siguiente directamente debajo de la "NSTimer * levelTimer;" línea de código:
dobles lowPassResults ;.

14 Busque la sección de código que comienza con la línea "- (void) levelTimerCallback: (NSTimer *) {temporizador" y termina con "}". Reemplazar esta sección de código con el siguiente código:

(Void) listenForBlow: (NSTimer *) {temporizador
[Grabador updateMeters];

const doble alfa = 0,05;
doble peakPowerForChannel = pow (10, (0,05 [Grabadora peakPowerForChannel: 0]));
lowPassResults = ALPHA peakPowerForChannel + (1,0 - alfa) * lowPassResults;

si (lowPassResults> 0,95)
NSLog (@ "golpe de micrófono detecta");
}