From b45f5e4be7362377bb61b8f6d751dcbe1888b7fe Mon Sep 17 00:00:00 2001 From: nixzhu Date: Wed, 25 Nov 2015 16:17:36 +0800 Subject: [PATCH] checkVoiceRecordValue, appendSampleValue to voiceRecordSampleView --- .../NewFeedVoiceRecord.storyboard | 1 + .../NewFeedVoiceRecordViewController.swift | 21 +++++++++++++++++++ .../AudioWaves/VoiceRecordSampleView.swift | 11 +++++++++- 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/Yep/ViewControllers/NewFeedVoiceRecord/NewFeedVoiceRecord.storyboard b/Yep/ViewControllers/NewFeedVoiceRecord/NewFeedVoiceRecord.storyboard index 7574ce0c..f084ecb2 100644 --- a/Yep/ViewControllers/NewFeedVoiceRecord/NewFeedVoiceRecord.storyboard +++ b/Yep/ViewControllers/NewFeedVoiceRecord/NewFeedVoiceRecord.storyboard @@ -92,6 +92,7 @@ + diff --git a/Yep/ViewControllers/NewFeedVoiceRecord/NewFeedVoiceRecordViewController.swift b/Yep/ViewControllers/NewFeedVoiceRecord/NewFeedVoiceRecordViewController.swift index cd7b045a..982b2e20 100644 --- a/Yep/ViewControllers/NewFeedVoiceRecord/NewFeedVoiceRecordViewController.swift +++ b/Yep/ViewControllers/NewFeedVoiceRecord/NewFeedVoiceRecordViewController.swift @@ -11,6 +11,8 @@ import AVFoundation class NewFeedVoiceRecordViewController: UIViewController { + @IBOutlet weak var voiceRecordSampleView: VoiceRecordSampleView! + @IBOutlet weak var voiceRecordButton: UIButton! var isVoiceRecording = false { @@ -22,10 +24,15 @@ class NewFeedVoiceRecordViewController: UIViewController { var voiceFileURL: NSURL? + var displayLink: CADisplayLink! + override func viewDidLoad() { super.viewDidLoad() title = NSLocalizedString("New Voice", comment: "") + + displayLink = CADisplayLink(target: self, selector: "checkVoiceRecordValue") + displayLink.addToRunLoop(NSRunLoop.currentRunLoop(), forMode: NSRunLoopCommonModes) } // MARK: - Actions @@ -34,6 +41,20 @@ class NewFeedVoiceRecordViewController: UIViewController { dismissViewControllerAnimated(true, completion: nil) } + func checkVoiceRecordValue() { + + if let audioRecorder = YepAudioService.sharedManager.audioRecorder { + + if (audioRecorder.recording) { + audioRecorder.updateMeters() + let normalizedValue = pow(10, audioRecorder.averagePowerForChannel(0)/40) + let value = CGFloat(normalizedValue) + + voiceRecordSampleView.appendSampleValue(value) + } + } + } + @IBAction func voiceRecord(sender: UIButton) { if isVoiceRecording { diff --git a/Yep/Views/AudioWaves/VoiceRecordSampleView.swift b/Yep/Views/AudioWaves/VoiceRecordSampleView.swift index 20a27e9a..f1c7f1a0 100644 --- a/Yep/Views/AudioWaves/VoiceRecordSampleView.swift +++ b/Yep/Views/AudioWaves/VoiceRecordSampleView.swift @@ -10,6 +10,8 @@ import UIKit class VoiceRecordSampleView: UIView { + var sampleValues: [CGFloat] = [] + lazy var sampleCollectionViewLayout: UICollectionViewFlowLayout = { let layout = UICollectionViewFlowLayout() layout.minimumInteritemSpacing = 0 @@ -60,6 +62,13 @@ class VoiceRecordSampleView: UIView { NSLayoutConstraint.activateConstraints(sampleCollectionViewConstraintH) NSLayoutConstraint.activateConstraints(sampleCollectionViewConstraintV) } + + func appendSampleValue(value: CGFloat) { + sampleValues.append(value) + + let indexPath = NSIndexPath(forItem: sampleValues.count - 1, inSection: 0) + sampleCollectionView.insertItemsAtIndexPaths([indexPath]) + } } extension VoiceRecordSampleView: UICollectionViewDataSource { @@ -69,7 +78,7 @@ extension VoiceRecordSampleView: UICollectionViewDataSource { } func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { - return 300 + return sampleValues.count } func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {