Come rilevare il colpo della Mic xCode

October 15

Application Programming Xcode di Apple consente ai programmatori con una conoscenza di C e di programmazione Objective-C sviluppare applicazioni per iOS e piattaforme OS X.. Se si sta sviluppando un'applicazione per un dispositivo iOS e si desidera che l'applicazione sia in grado di rilevare quando un utente soffia nel microfono, c'è un modo molto specifico per codificare l'applicazione per permettergli di farlo. Questo codice comporta consentendo all'applicazione di ricevere in ingresso dal microfono, il campionamento del livello audio e dire l'applicazione per ascoltare il rumore di qualcuno che soffia nel microfono, ognuno dei quali può essere implementato nell'applicazione Xcode.

istruzione

1 Avviare Xcode e aprire il progetto basato sulla vista che si desidera rilevare quando un utente soffia nel microfono.

2 Fare clic sulla freccia a sinistra dell'opzione "obiettivi", quindi fare clic destro sulla voce che prende il nome dell'applicazione. Ad esempio, se l'applicazione si chiama "GenericGame," la voce si chiamerà "GenericGame." Spostare il cursore del mouse sopra l'opzione "Aggiungi" e selezionare le "strutture esistenti ..." opzione.

3 Fai clic sul pulsante "+", selezionare l'opzione "AVFoundation.framework" e fare clic sul pulsante "Aggiungi".

4 Fare clic sulla freccia a sinistra della cartella dal nome del progetto. Ad esempio, se il progetto è denominato "GenericGame", fare clic sulla freccia a sinistra della cartella "GenericGame". Fare clic sulla freccia a sinistra nella cartella "classi" e selezionare il file "ViewController.h" per visualizzare il contenuto del file.

5 Aggiungere le seguenti due righe di codice direttamente sotto la "#import <UIKit / UIKit.h>" riga di codice:

import <AVFoundation / AVFoundation.h> import <CoreAudio / CoreAudioTypes.h>.

6 Aggiungere la seguente riga di codice direttamente sotto la "@interface MicBlowViewController: UIViewController {" riga di codice:
AVAudioRecorder * registratore ;.

7 Aggiungere il seguente codice direttamente sotto la "[super viewDidLoad];" linea di codice:
NSURL * url = [NSURL fileURLWithPath: @ "/ dev / null"];

NSDictionary * Impostazioni = [dictionaryWithObjectsAndKeys NSDictionary:
[NSNumber numberWithFloat: 44.100,0], AVSampleRateKey,
[NSNumber numberWithInt: kAudioFormatAppleLossless], AVFormatIDKey,
[NSNumber numberWithInt: 1], AVNumberOfChannelsKey,
[NSNumber numberWithInt: AVAudioQualityMax], AVEncoderAudioQualityKey,
nil];

NSError * errori;

registratore = [[AVAudioRecorder alloc] initWithURL: Impostazioni URL: Impostazioni di errore: & errore];

se (flauto dolce) {
[Registratore prepareToRecord];
recorder.meteringEnabled = YES;
[Record registratore];
} altro
NSLog ([descrizione errore]) ;.

8 Aggiungere la seguente riga di codice direttamente sotto il "- (void) {dealloc" riga di codice:
[Rilascio registratore] ;.

9 Aggiungere il seguente codice direttamente sotto il

"registratore AVAudioRecorder;" linea di codice:
NSTimer levelTimer;
}

(void) levelTimerCallback: (NSTimer *) timer; 10 Aggiungere la seguente riga di codice direttamente sotto la "[record registratore];" linea di codice:
levelTimer = [NSTimer scheduledTimerWithTimeInterval: 0,03 bersaglio: selettore di auto: @selector (levelTimerCallback :) userInfo: nil ripete: SI] ;.

11 Fai clic su file "ViewController.m" del progetto per visualizzarne il contenuto. Immettere il seguente codice nel file ViewController.m:

(Void) levelTimerCallback: (NSTimer *) timer {
[Registratore updateMeters];
NSLog (@ "Ingresso medio: ingresso% f Peak:% f", [averagePowerForChannel registratore: 0], [peakPowerForChannel registratore: 0]);
}

12 Aggiungere il seguente codice direttamente sotto il "- (void) {dealloc" riga di codice:
[Rilascio levelTimer] ;.

13 Clicca su file "ViewController.h" del progetto per visualizzarne il contenuto. Aggiungere il seguente codice direttamente sotto la "NSTimer * levelTimer;" linea di codice:
doppie lowPassResults ;.

14 Individuare la sezione di codice che inizia con la linea "- (void) levelTimerCallback: (NSTimer *) timer {" e finisce con "}". Sostituire questa sezione di codice con il seguente codice:

(Void) listenForBlow: (NSTimer *) timer {
[Registratore updateMeters];

const double ALPHA = 0.05;
doppio peakPowerForChannel = pow (10, (0.05 [peakPowerForChannel registratore: 0]));
lowPassResults = ALPHA peakPowerForChannel + (1,0 - ALPHA) * lowPassResults;

if (lowPassResults> 0,95)
NSLog (@ "colpo Mic rilevato");
}