Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import UIKit
- import AVFoundation
- import CoreData
- @objc class AudioNoteController: BaseViewController, AVAudioPlayerDelegate, AVAudioRecorderDelegate {
- var recorder: AVAudioRecorder!
- var player:AVAudioPlayer!
- var soundFileURL:NSURL!
- @IBOutlet var recordButton: UIButton!
- @IBOutlet var stopButton: UIButton!
- @IBOutlet var playButton: UIButton!
- @IBOutlet var counter: UILabel!
- var audioNote: AudioNote!
- override func viewDidLoad() {
- super.viewDidLoad()
- self.title = "Audio Note"
- let cancelButton: UIBarButtonItem = UIBarButtonItem(title: "Back", style: .Plain, target: self, action: nil)
- self.navigationItem.backBarButtonItem = cancelButton
- recordButton.enabled = true
- stopButton.enabled = false
- playButton.enabled = false
- setSessionPlayback()
- }
- override func didReceiveMemoryWarning() {
- super.didReceiveMemoryWarning()
- //recorder = nil
- //player = nil
- }
- @IBAction func saveAudioNote(sender: AnyObject) {
- createAudioNote()
- }
- @IBAction func record(sender: AnyObject) {
- if recorder?.recording == false {
- playButton.enabled = false
- recordButton.enabled = false
- stopButton.enabled = true
- recorder?.record()
- println("Recording")
- } else {
- println("not recording")
- }
- }
- @IBAction func stopRecord(sender: AnyObject) {
- stopButton.enabled = false
- playButton.enabled = true
- recordButton.enabled = true
- if recorder?.recording == true {
- recorder?.stop()
- println("Recording Stopped")
- } else {
- player?.stop()
- println("Playing Stopped")
- }
- }
- @IBAction func playAudio(sender: AnyObject) {
- if recorder?.recording == false {
- stopButton.enabled = true
- recordButton.enabled = false
- var error: NSError?
- player = AVAudioPlayer(contentsOfURL: recorder?.url,
- error: &error)
- player?.delegate = self
- if let err = error {
- println("audioPlayer error: \(err.localizedDescription)")
- } else {
- player?.play()
- println("Playing Started")
- }
- }
- }
- func createAudioNote() {
- let appDelegate: AppDelegate = localAppDelegate()
- let managedContext: NSManagedObjectContext = appDelegate.managedObjectContext!
- let entityDescription:NSEntityDescription! = NSEntityDescription.entityForName("AudioNote", inManagedObjectContext: managedContext)
- audioNote = AudioNote(entity: entityDescription, insertIntoManagedObjectContext: managedContext)
- audioNote.date_created = NSDate()
- audioNote.url = "\(soundFileURL)"
- if (appDelegate.userLocation != nil){
- println(appDelegate.userLocation!.coordinate.latitude)
- println(audioNote)
- audioNote.latitude = appDelegate.userLocation!.coordinate.latitude
- audioNote.longitude = appDelegate.userLocation!.coordinate.longitude
- }
- }
- func setSessionPlayback() {
- var format = NSDateFormatter()
- format.dateFormat="yyyy-MM-dd-HH-mm-ss"
- var currentFileName = "recording-\(format.stringFromDate(NSDate())).caf"
- let dirPaths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
- let docsDir = dirPaths[0] as! String
- let soundFilePath = docsDir.stringByAppendingPathComponent(currentFileName)
- soundFileURL = NSURL(fileURLWithPath: soundFilePath)
- let recordSettings = [AVEncoderAudioQualityKey: AVAudioQuality.Low.rawValue,
- AVEncoderBitRateKey: 32,
- AVNumberOfChannelsKey: 2,
- AVSampleRateKey: 44100.0]
- var error: NSError?
- let audioSession = AVAudioSession.sharedInstance()
- audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord,
- error: &error)
- if let err = error {
- println("audioSession error: \(err.localizedDescription)")
- }
- recorder = AVAudioRecorder(URL: soundFileURL,
- settings: recordSettings as [NSObject : AnyObject], error: &error)
- if let err = error {
- println("audioSession error: \(err.localizedDescription)")
- } else {
- recorder?.prepareToRecord()
- println("prepared")
- }
- }
- func audioPlayerDidFinishPlaying(player: AVAudioPlayer!, successfully flag: Bool) {
- recordButton.enabled = true
- stopButton.enabled = false
- }
- func audioPlayerDecodeErrorDidOccur(player: AVAudioPlayer!, error: NSError!) {
- println("Audio Play Decode Error")
- }
- func audioRecorderDidFinishRecording(recorder: AVAudioRecorder!, successfully flag: Bool) {
- }
- func audioRecorderEncodeErrorDidOccur(recorder: AVAudioRecorder!, error: NSError!) {
- println("Audio Record Encode Error")
- }
- override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
- if (segue.identifier == "showAudioNoteDetails") {
- if let noteController = segue.destinationViewController as? AudioNoteDetailsController{
- //noteController.audioNote = audioNote
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement