// // ViewController.swift // iOSMikrofon // // Created by Michael Wilhelm on 1/05/2016. // Copyright © 2016 Michael Wilhelm. All rights reserved. // import UIKit import AVFoundation import MediaPlayer class ViewController: UIViewController, AVAudioPlayerDelegate, AVAudioRecorderDelegate{ // uiAttribute // globale Variablen var avAudioPlayer : AVAudioPlayer? var avAudioRecorder : AVAudioRecorder? @IBOutlet var bnStartRecord: UIButton! @IBOutlet var bnStop: UIButton! @IBOutlet var bnPlay: UIButton! @IBOutlet var labelStatus: UILabel! // uiEvents @IBAction func bnStartRecordClick(sender: UIButton) { if avAudioRecorder?.recording == false { bnStartRecord.enabled = false bnStop.enabled = true avAudioRecorder?.record() labelStatus.text = "Aufnahme läuft..." } // if } @IBAction func bnStopClick(sender: UIButton) { bnStartRecord.enabled = true bnStop.enabled = false bnPlay.enabled = true if avAudioRecorder?.recording == true { avAudioRecorder?.stop() labelStatus.text = "Aufnahme beendet..." } else { avAudioPlayer?.stop() labelStatus.text = "Wiedergabe beendet..." } } @IBAction func bnPlayClick(sender: UIButton) { if avAudioRecorder?.recording == false { bnStartRecord.enabled = false bnStop.enabled = true bnPlay.enabled = false labelStatus.text = "Wiedergabe läuft..." do { avAudioPlayer = try AVAudioPlayer(contentsOfURL: (avAudioRecorder?.url)!) avAudioPlayer?.play() } catch { print("Fehler bei der Wiedergabe") } } } private func getPathFilename() -> String { let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) if let path = paths.first { return path+"/sound.caf" } else { return "" } } override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. bnStartRecord.enabled = true bnStop.enabled = false bnPlay.enabled = false avAudioPlayer?.delegate = self avAudioRecorder?.delegate = self let soundFilePath = getPathFilename() let soundFileURL = NSURL(fileURLWithPath: soundFilePath) let recordSettings = [AVEncoderAudioQualityKey: AVAudioQuality.Min.rawValue, AVEncoderBitRateKey: 16, AVNumberOfChannelsKey: 2, AVSampleRateKey: 44100.0] let audioSession = AVAudioSession.sharedInstance() do { try audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord) } catch { print("Fehler bei der Initialisierung") } do { try avAudioRecorder = AVAudioRecorder( URL: soundFileURL, settings: recordSettings as! [String: AnyObject]) avAudioRecorder?.prepareToRecord() } catch { print("Fehler bei der Initialisierung(2)") } } // Did Load // delegate Methoden func audioPlayerDidFinishPlaying(player: AVAudioPlayer!, successfully flag: Bool) { print("Wiedergabe beendet") labelStatus.text = "Wiedergabe beendet..." } func audioPlayerDecodeErrorDidOccur(player: AVAudioPlayer!, error: NSError!) { print("Ein Fehler ist während der Wiedergabe aufgetreten") } func audioRecorderDidFinishPlaying( player: AVAudioRecorder!, successfully flag: Bool) { print("Aufnahme beendet") labelStatus.text = " Aufnahme beendet..." } func audioRecorderDecodeErrorDidOccur( player: AVAudioRecorder!, error: NSError!) { print("Ein Fehler ist während der Aufnahme aufgetreten") } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }